【Swift】プロパティリスト(plist)とは?自作方法と読み込み

この記事からわかること

  • Swiftプロパティリスト(plist)とは?
  • オブジェクト永続化意味メリット
  • プロパティリストの自作方法読み込み/書き込み

index

[open]

\ アプリをリリースしました /

ふるログ

ふるさと納税管理アプリ-ふるログ-

無料posted withアプリーチ

iOSアプリ開発をしていた際に遭遇する「XXX.plist」という拡張子のついたファイルとはどのようなもなのかまとめていきたいと思います。

プロパティリストとは?

拡張子が「.plist」になっているものはプロパティリストと呼ばれる形式のテキストファイルです。プロパティリストとはオブジェクトを永続化することを目的とし、オブジェクトが持つプロパティを保持するために使用されます。

mac OSやiOSでもプロパティリストは組み込まれて使用されており、mac OSではユーザー設定や環境設定を行うために、iOSではアプリ情報を設定するための「info.plist」などに用いられています。

具体的な例をiOSアプリの「info.plist」で見てみると「アプリ名(Bundle name)」や「ロケール」、「ユーザーへの許可申請の文言」などを設定できるようになっています。

SwiftプロジェクトのInfo.plistにアプリIDキーを追加する

また上記画像のようにプロパティリストは「Property List Editor」と呼ばれる専用エディターが使用でき、編集が容易に行えるようになっているのも特徴の1つです。

保存形式とデータ構造

プロパティリストは「Key」、「Type」、「Value」の3つの項目から成り立っており、ファイルの中身はXML形式で保存されています。

「プロパティリストの中身」

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>AvailableLibraries</key>
	<array>
		<dict>
			<key>LibraryIdentifier</key>
			<string>ios-arm64_x86_64-simulator</string>
			<key>LibraryPath</key>
			<string>GoogleMobileAds.framework</string>
			<key>SupportedArchitectures</key>
			<array>
				<string>arm64</string>
				<string>x86_64</string>
			</array>
			<key>SupportedPlatform</key>
			<string>ios</string>
			<key>SupportedPlatformVariant</key>
			<string>simulator</string>
		</dict>
	</array>
	<key>CFBundlePackageType</key>
	<string>XFWK</string>
	<key>XCFrameworkFormatVersion</key>
	<string>1.0</string>
</dict>
</plist>

また大枠のデータ構造としてはNSArray型(配列)もしくはNSDictionary型(連想配列/辞書)での保存が条件になります。

プロパティリスト〜まとめ〜

プロパティリストを自作する

ただのファイル形式なのでプロパティリストは自分で作成することも可能です。注意するのはXML形式であることと、大枠が配列/辞書型であることです。

実際にプロパティとして保存できるデータ型は配列/辞書型である必要はありません。

GUIから作成する

まずはGUI(マウス操作)で作成する方法です。Swiftプロジェクトの中に新規ファイルを追加する容量で拡張子がplistのものを作成します。

この場合はViewファイルや「info.plist」と同階層に作っていく流れになります。

Xcodeの上部「File」>「New」>「File...」を押して作成する形式から「Property List」を選択します。

【Swift】プロパティリスト(plist)を自作する方法(Xcode)

これでプロパティファイルの作成が完了しました。

コードで作成する

Swiftで記述したコード内から動的に作成する場合を見てみます。今回はDocumentsディレクトリ内に「demo.plist」を作成する関数を定義していきます。

func createPlist(){
    // NSDictionary 型で定義
    let data: NSDictionary = ["Title": "プロパティリスト(plist)とは", "Minutes": 3 , "isIndex": true]
    guard let docURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else{
        fatalError("URL取得失敗")
    }
    let fullURL = docURL.appendingPathComponent("demo.plist")
    
    data.write(to: fullURL,atomically: true)
}

ファイルを操作するためのFileManagerクラスの使い方については以下の記事を参考にしてください。

プロパティリストの読み込み

プロパティリストを読み込み、値を参照するためにはNSDictionaryイニシャライザを使用して変数に格納していきます。

func loadPlist(){
  guard let docURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else{
      fatalError("URL取得失敗")
  }
  let fullURL = docURL.appendingPathComponent("demo.plist")
  let plist = NSDictionary(contentsOfFile: fullURL.path)
  print(plist!["Title"])
}

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

私がSwift UI学習に使用した参考書

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

自作iOSアプリ

\ アプリをリリースしました /

mapping

自分だけの地図を作ろう!-mapping-

無料posted withアプリーチ

割り勘アプリ-bill-

旅行におすすめ!
割り勘アプリ-bill-

無料posted withアプリーチ

Imakoko

現在地を取得するアプリ!Imakoko

無料posted withアプリーチ

ふるログ

ふるさと納税管理アプリ-ふるログ-

無料posted withアプリーチ

Remind-シンプル通知アプリ-

シンプル通知アプリ-Remind-

無料posted withアプリーチ

CLIPURL

好きな記事をクリップしよう!-CLIPURL-

無料posted withアプリーチ

記録カレンダー

続けたを可視化できるアプリ!記録カレンダー

無料posted withアプリーチ

CART-共有できるお買い物リスト-

CART-共有できるお買い物リスト-

無料posted withアプリーチ

Githubにて
iOSアプリのソースコードを公開中!

自作Webアプリ

子育て知識共有サイト-mikata-

子育て知識共有サイト-mikata-

フレームワーク:Laravel/Vue.js

作成の流れQiita「Laravel×Vue.jsを使って初めてWebアプリを自作しました!」

感想:初めて作成したWebアプリです!メールアドレスでの会員登録や質問投稿、回答やコメント、いいねやフォローなどSNSに近い機能を実装してみました。レビューや修正すべきポイントなどを教えていただけると嬉しいです!

New Article

index