plist 檔案全稱:Property List. 屬性清單檔案,它是一種用來存儲串行化後的對象的檔案。屬性清單檔案的擴充名為 .plist ,是以通常被稱為 plist 檔案。檔案是 XML 格式的。
plist 檔案通常用于儲存使用者設定,也可以用于存儲捆綁的資訊。
例如:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiM4YTOwcjM1ETMxMDM2EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
1. 建立 plist 檔案
建立方式:
File -> New -> File
或
command + N
, 如圖所示:
建立一個名為 TestPList.plist 的檔案。
打開該檔案,在 Root 目錄下右鍵選擇 Add Row(或點選加号)添加資料,并在 Type 中選擇類型為 Dictionary。點加号添加這個 Dictionary 下的資料。添加完 Key 之後在後面添加 Value 的值。建立好的 plist 檔案示例如下:
在建立完的 plist 檔案右鍵,用 Source Code 打開,代碼如下:
<?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>item-0</key>
<dict>
<key>Jack</key>
<string>25</string>
</dict>
<key>item-1</key>
<dict>
<key>中國工商銀行</key>
<string>ICBC</string>
<key>中國銀行</key>
<string>BOC</string>
</dict>
<key>item-2</key>
<dict>
<key>中國農業銀行</key>
<string>ABC</string>
<key>中國建設銀行</key>
<string>CCB</string>
</dict>
</dict>
</plist>
3. 讀取 plist 檔案的資料
讀取 plist 代碼如下所示:
- (void)viewDidLoad {
[super viewDidLoad];
// 讀取 plist 檔案
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"TestPList" ofType:@"plist"];
NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
NSLog(@"-->%@", data);
}
列印結果:
test[:] -->{
"item-0" = {
Jack = ;
};
"item-1" = {
"\U4e2d\U56fd\U5de5\U5546\U94f6\U884c" = ICBC;
"\U4e2d\U56fd\U94f6\U884c" = BOC;
};
"item-2" = {
"\U4e2d\U56fd\U519c\U4e1a\U94f6\U884c" = ABC;
"\U4e2d\U56fd\U5efa\U8bbe\U94f6\U884c" = CCB;
};
}
這樣就把資料讀出來了(PS: 中文會以 Unicode 編碼顯示)。
4. 建立和寫入 plist 檔案
在開發過程中,有時候需要把程式的一些配置儲存下來,或者遊戲資料等等。這時候需要寫入 plist 資料。寫入的 plist 檔案會生成在對應程式的沙盒目錄裡。
接着上面讀取 plist 資料的代碼,加入了寫入資料的代碼,
- (void)viewDidLoad {
[super viewDidLoad];
// 讀取 plist 檔案
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"TestPList" ofType:@"plist"];
NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
NSLog(@"-->%@", data);
// 寫入 plist 檔案
[data setObject:@"add something" forKey:@"add"];
// 添加一項内容
[data setObject:@"add some content" forKey:@"c_key"];
// 擷取應用程式沙盒的Documents目錄
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *plistPath1 = [paths objectAtIndex:];
// 得到完整的檔案名
NSString *filename = [plistPath1 stringByAppendingPathComponent:@"test.plist"];
// 輸入寫入
[data writeToFile:filename atomically:YES];
NSLog(@"filename-->%@", filename);
// 那怎麼證明我的資料寫入了呢?讀出來看看
NSMutableDictionary *data1 = [[NSMutableDictionary alloc] initWithContentsOfFile:filename];
NSLog(@"%@", data1);
}
可以看到内容已經添加(這裡還列印出了完整的檔案名)。
列印結果:
這裡 Xcode 版本為 7.0
原文連結:iOS學習之 plist檔案的讀寫