本章目标:  plist 文件的读写操作

在xcode中创建一个项目 会在supportion files 目录下 看见一个已plist后缀类型的文件,这个文件 是以 key value 存放的键 值对的值。它全名是:Property List,属性列表文件,它是一种用来存储串行化后的对象的文件。属性列表文件的扩展名为.plist ,因此通常被称为 plist文件。plist文件是标准的xml格式的。  我们在日常开发中 可以用它 来存储 一些系统的 的用户信息,系统的配置信息等。

本章 我们来看看plist 文件是 如何读写的

在具体操作之前我们来先了解下几个专业的名词 :

NsBundler 主束 束是一个特定的文件夹类型,其中的内容遵循特定的结构,应用程序喝框架都是束, NsBundler 一个主要的作用是获取添加到项目的Resoureces文件加的资源。

NSDictionary 字典 就是key-value对的集合。 key是字符串(NSString),value是对象指针。

启动Xcode 创建一个名为”HelloWord“新项目:界面模板选择为 single view appliction ,不会创建的同学 去看上一章喔  项目信息填写如下图。填写完成后 选择项目保存位置

在Supporting Files 目录下 创建一个新文件  一个新的Plist 文件

Supporting files -> new file  -> ios -> Resourece -> Property List 

如图 :

 

ios开发入门- plist 文件读写_第1张图片

 

创建后命名为 citys 并保存  改文件会出现在 Supporting Files 目录下面

打开他 并添加 值 如图 :

 

ios开发入门- plist 文件读写_第2张图片

 该文件 在后面的 源码中有 , 各位童鞋 可以去下载 节省下载时间

在本章里面 我们 没用到界面 所有数据 在 日志中查看

 

下面看代码

   //创建主束  

    NSBundle *bundle=[NSBundle mainBundle];

   //读取plist文件路径
    NSString *path=[bundle pathForResource:@"citys" ofType:@"plist"];

   //读取数据到 NsDictionary字典中
    NSDictionary *dictionary=[[NSDictionary alloc]initWithContentsOfFile:path];
    NSLog(@"size is %d",[dictionary count]);
    //NSLog(@"data is %@",dictionary);
    NSArray *array=[dictionary allKeys];
   

   // 循环输出字典中的  data 数据
      for(id key in dictionary)
       
    {
        NSArray *arrays=[dictionary objectForKey:key];
        for(int i=0;i<[arrays count];i++){
            NSLog(@"key: %d,value: %@",i,[arrays objectAtIndex:i]);
        }
    }

把上面的代码添加到 委托器中的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
方法中

 

保存运行 ,各位童鞋 就可以看到 log 控制台中看到 输出的数据了。 如下

iphone_Sample_PlistReadAndWrite[864:f803] key: 0,value: 广州
2012-10-09 00:44:10.143 iphone_Sample_PlistReadAndWrite[864:f803] key: 1,value: 深圳
2012-10-09 00:44:10.143 iphone_Sample_PlistReadAndWrite[864:f803] key: 2,value: 肇庆
2012-10-09 00:44:10.143 iphone_Sample_PlistReadAndWrite[864:f803] key: 3,value: 佛山
2012-10-09 00:44:10.143 iphone_Sample_PlistReadAndWrite[864:f803] key: 4,value: 东莞
2012-10-09 00:44:10.143 iphone_Sample_PlistReadAndWri。。。。。。。 省略

 

 

在我们平时的手机开发中需要保存一些用户数据,操作数据。 plist 可以算是其中的一种方法了,下面我们来看看 plist 文件的写操作。

程序继续沿用上面的程序

在 ios中要写入数据 ,那我们的数据 保存在哪儿呢, 是沙盒, 每个程序的数据只能保存在沙盒中, 同样我们的数据 也是保存在沙盒中。 少废话了 ,直接看代码

 //plist write
    //创建一个可变长度的NSMutableDictionary 对象 该对象专门用于存储数据的
    NSMutableDictionary *data=[[NSMutableDictionary alloc]init];
    //添加数据
    [data setObject:@"one" forKey:@"1"];
    [data setObject:@"two" forKey:@"2"];
    [data setObject:@"three" forKey:@"3"];
    [data setObject:@"four" forKey:@"4"];
    //要往沙盒中写数据当然要先取的沙盒目录啦
    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *plistPaht=[paths objectAtIndex:0];
    

    //取得完整的文件名
    NSString *fileName=[plistPaht stringByAppendingPathComponent:@"textdeom.plist"];
    NSLog(@"fileName is%@",fileName);
    //创建并写入文件
    [data writeToFile:fileName atomically:YES];
    
    //检查是否写入
    NSMutableDictionary *writeData=[[NSMutableDictionary alloc]initWithContentsOfFile:fileName];
    NSLog(@"write data is :%@",writeData);

上面我们创建了一个NSMutableDictionary 可变长度的字典,并添加元素,然后在写入沙盒中,最后并重新读取出来,  这一章涉及了 沙盒的 内容,大家 先了解这里,后面我们会再讲沙盒的

上面的代码添加到 委托器中的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

保存运行程序 效果如下 :

 

ios开发入门- plist 文件读写_第3张图片

 运行程序会输出 沙盒的地址 ,和我们程序给 给 plist 写入的 值

好了 这一章就到这里, 欢迎 各位童鞋 拍砖 。

代码下载地址 :

https://blog.51cto.com/ext/down_att.php?aid=36012&code=5477