【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を使わずこのサイトを完全自作でサイト運営中〜

New Article

index