1、概述xcode
「歸檔」意思是持久化存儲數據。plist文件是一種XML格式的文件,拓展名爲plist。若是對象是NSString、NSDictionary、NSArray、NSData、NSNumber等類型,就能夠使用writeToFile:atomically:方法直接將對象寫到屬性列表文件(plist文件)中。特別注意的是plist文件不能存儲對象。安全
IOS經常使用文件存儲方式有:編輯器
XML屬性列表(plist)歸檔atom
Preference(偏好設置)code
NSKeyedArchiver歸檔(NSCoding)對象
SQLite3string
Core Datait
2、歸檔NSDictionaryio
將一個NSDictionary對象歸檔到一個plist屬性列表中:table
首先,將數據封裝成字典:
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:@"母雞" forKey:@"name"];
[dict setObject:@"15013141314" forKey:@"phone"];
[dict setObject:@"27" forKey:@"age"];
其次,獲取沙盒中Documents/stu.plist完整路徑,根據路徑將字典持久化到Documents/stu.plist文件中:
[dict writeToFile:path atomically:YES];//YES表明安全存儲
成功寫入到Documents目錄下後以下圖:
用文本編輯器打開,文件內容以下圖:
用xcode打開屬性文件以下圖:
上面是從NSDictionary寫入到plist文件,也能夠從NSArray寫入到plist文件,例如:
// 1.得到沙盒根路徑
NSString *home = NSHomeDirectory();
// 2.拼接成document路徑
NSString *docPath =
[home stringByAppendingPathComponent:@"Documents"];
// 3.新建數據
NSArray *data = @[@"jack", @10, @"ffdsf"];
//4.拼接成具體文件的路徑
NSString *filepath =
[docPath stringByAppendingPathComponent:@"data.plist"];
// 5.寫入數據
[data writeToFile:filepath atomically:YES];
3、恢復NSDictionary
讀取Documents/stu.plist的內容,實例化NSDictionary
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:path];
NSLog(@"name:%@", [dict objectForKey:@"name"]);
NSLog(@"phone:%@", [dict objectForKey:@"phone"]);
NSLog(@"age:%@", [dict objectForKey:@"age"]);
打印信息以下:
上面是讀取到NSDictionary,對應地,咱們也能夠讀取到NSArray,例如:
// 1.得到沙盒根路徑
NSString *home = NSHomeDirectory();
// 2.document路徑
NSString *docPath =
[home stringByAppendingPathComponent:@"Documents"];
// 3.文件路徑
NSString *filepath =
[docPath stringByAppendingPathComponent:@"data.plist"];
// 4.讀取數據
NSArray *data = [NSArray arrayWithContentsOfFile:filepath];
4、NSDictionary的存儲和讀取過程