杏仁丶的iOS学习专题

plist 文件写入与读取

2016-06-03  本文已影响4065人  amberling
plist Xcode 搜索图片

plist是iOS中特有的一种文件形式,将数据写入plist文件的实质就是生成plist文件,那什么样的数据才能生成plist文件呢?答:数组和字典。

1, 将数组写入plist文件(文件储存到cache路径下)

NSArray *words = @[@"a", @"b", @"c", @"d", @"e", @"f", @"g", @"h", @"i", @"j", @"k", @"l", @"m", @"n", @"o", @"p", @"q", @"r", @"s", @"t", @"u", @"v", @"w", @"x", @"y", @"z"];
//获取设备缓存路径
NSString *cachePatch = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];

//拼接file路径,最终数据存储到words.plist文件中
NSString *filePath = [cachePatch stringByAppendingPathComponent:@"words.plist"];

//将words数组中数据写入filePath下
[words writeToFile:filePath atomically:YES];


NSSearchPathForDirectoriesInDomains( NSSearchPathDirectory directory, NSSearchPathDomainMask domainMask, BOOL expandTilde )方法参数说明:
directory: 搜索文件夹
domainMask: 搜索范围 (NSUserDomainMask 代表在用户中查找)
expandTilde: yes 表示路径展开,no 表示路径不展开 用~代替沙盒路径(一般情况用yes)

2,将字典写入plist文件

NSDictionary *personInfo = @{
                               @"name" : @"amber",
                               @"age" : @"18",
                               @"height" : @"165"};
//写入路径
NSString *cachePatch = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
NSString *filePath = [cachePatch stringByAppendingPathComponent:@"personInfo.plist"];

//将路径转换为本地url形式
NSURL *fileUrl = [NSURL fileURLWithPath:filePath];

//writeToURL 的好处是,既可以写入本地url也可以写入远程url,苹果推荐使用此方法写入plist文件
[personInfo writeToURL:fileUrl atomically:YES];

3,将元素为字典的数组写入plist文件


NSArray *products = @[
                              @{@"icon" : @"liantiaobao", @"title" : @"链条包"},
                              @{@"icon" : @"shoutibao", @"title" : @"手提包"},
                              @{@"icon" : @"danjianbao", @"title" : @"单肩包"},
                              @{@"icon" : @"shuangjianbao", @"title" : @"双肩包"},
                              @{@"icon" : @"xiekuabao", @"title" : @"斜挎包"},
                              @{@"icon" : @"qianbao", @"title" : @"钱包"}
                              ];

NSString *cachePatch = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
NSString *filePath = [cachePatch stringByAppendingPathComponent:@"products.plist"];
NSURL *fileUrl = [NSURL fileURLWithPath:filePath];
[products writeToURL:fileUrl atomically:YES];

4,读取plist文件

//获取需要读取数据plist路径
NSString *cachePatch = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
NSString *filePath = [cachePatch stringByAppendingPathComponent:@"products.plist"];

//将plist文件中数据转换成数组形式输出(要预先知道plist中数据类型,否则无法读出)
NSArray *products = [NSArray arrayWithContentsOfFile:filePath];
NSLog(@"%@", products);

参考:小码哥视频资料

上一篇下一篇

猜你喜欢

热点阅读