#はじめに
プロパティリスト(設定ファイル)の読込と書込について色々とハマったので、簡単な例を挙げてまとめた。
なお、nilチェックは省略しています。
#.plistをどこに作成するか
用途 | 作成場所 | 備考 | |
---|---|---|---|
A | 読取専用 | プロジェクト内 *1 | 書込は不可 |
B | 読取&書込 | Documents または Library *2 | XcodeからGUIで見られない |
*1 ViewController.swiftやinfo.plistと同じディレクトリ | |||
*2 ディレクトリ構造についてはこちらが参考になります |
#A 読取専用
- info.plistと同じディレクトリに、sample.plistを作る (XcodeのGUIから)
- swiftで読み込む
let filePath = Bundle.main.path(forResource: "sample", ofType:"plist" )
let plist = NSDictionary(contentsOfFile: filePath!)
#B 読取&書込#
例えば、Documents配下に.plistを作って読み書きする
- Documents配下にsample.plistを作る
//登録したいデータ
//NSDictionaryとして作る。 keyは必ずString。
let putData: NSDictionary = ["Name": "ジャイソン・ステイサム", "Age": 50, "isPowerful": true]
//書き込む
let manager = FileManager.default
let documentDir = manager.urls(for: .documentDirectory, in: .userDomainMask)[0]
let url = documentDir.appendingPathComponent("sample.plist")
putData.write(to:url, atomically: true)
- 読み込む
//NSDictionaryとして読み込む
let manager = FileManager.default
let documentDir = manager.urls(for: .documentDirectory, in: .userDomainMask)[0]
let url = documentDir.appendingPathComponent("sample.plist")
let plist = NSDictionary(contentsOfFile: url.path)
//値を抜き出して使う
print("名前: ", plist!["Name"])
print("年齢: ", plist!["Age"])
print("強いかどうか: ", plist!["isPowerful"])
#参考#
公式 About Property Lists
iOSでデータを永続化する方法
Swiftでプロジェクト内のplistを読み込む方法
plistを読み込む