美文网首页
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