美文网首页
pList文件

pList文件

作者: 天蓬大元 | 来源:发表于2018-02-02 10:54 被阅读0次
pList文件特点:
//1. 以列表的方式存储数据的文件
//2. pList不能存储基本数据类型,只能存类类型
//3. 读写方式只能为数组或字典
//4. 以数组的方式写入,则以数组方式读;
     以字典方式写,则以字典的方式读。

一,数据写入

写入pList文件的两种方式:手动写入&调方法写入
1,手动写入
新建一个plist文件
手动写入数据
2,调用方法写入
注意,这里如果要存储基本数据类型,需要用 NSNumber类对其进行封装
//NSNumber  数字类  存储数字的一个类
//初始化NSNumber对象: 类方法、对象方法
//可将int、float、double、char等类型变量转NSNumber对象类型
   int a = 12;
   NSNumber *numA = [NSNumber numberWithInt:a];
   NSNumber *numB = @5;  //直接初始化NSNumber对象
   NSArray *array = @[@"aa",numA,numB,@"bb"];
先创建一个plist文件
//Library
NSArray*paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); 
NSString*path=[pathsobjectAtIndex:0];
//然后拼接完整的路径
NSString *pathNew = [path stringByAppendingString:@"/write.plist"];
NSFileManager *file1 = [NSFileManager defaultManager];
//判断文件是否存在
BOOL bval = [file1 fileExistsAtPath:pathNew];
//如果返回值为YES,则文件存在,否则文件不存在,则创建
if(bval){
    NSLog(@"文件已存在");
}else{
    //参数1:文件路径   参数2:文件内容 nil  参数3:属性信息  nil
bval = [file1 createFileAtPath:pathNew contents:nil attributes:nil];
if(bval){  //返回值为YES,说明创建文件成功,否则失败
    NSLog(@"创建文件成功");
}else{
    NSLog(@"创建文件失败");
}
}
//将数组写入到plist文件
if([array writeToFile: pathNew atomically:YES]){
    NSLog(@"写入plist成功");
}else{
    NSLog(@"写入失败");
}
现在我们读取plist文件,看看LG.SandBox.plist中都存储了哪些数据
3,读取plist文件内容
 //1. 通过数组方式获取plist文件数据
 NSArray *arr2 = [NSArray arrayWithContentsOfFile: pathNew];
 //2.通过字典方式获取plist文件数据
 NSDictionary *dic2 = [NSDictionary dictionaryWithContentsOfFile: pathNew];
 //因为prePath路径下的plist是以数组方式写入,所以只能通过数组读取
 NSLog(@"arr2 = %@,dic2=%@",arr2,dic2);
4,有意思的一个地方
现在我在上述代码的基础上,在向plist文件中存储一个字典
NSDictionary *dic = @{@"1":@"0"};
读取plist文件内容,你会发现,此时只存在一个字典,而原来的数组不见了。
别急,我们再来存一个字典
NSDictionary *dic = @{@"1":array};
读取plist文件内容,你会发现,字典中会包含一个数组,而且存储成功。
怎么回事呢?从手动创建的plist文件图可以看出,一个plist文件只允许存在一个主Key,该Key对应一种数据结构(数组或者字典)。所以,你可以采用多层嵌套的结构存储多个不同类型的数据,但最外层只允许是数组或者字典,而且只允许一个存在。

Dome

相关文章

网友评论

      本文标题:pList文件

      本文链接:https://www.haomeiwen.com/subject/kdyszxtx.html