本章目标: 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
如图 :
创建后命名为 citys 并保存 改文件会出现在 Supporting Files 目录下面
打开他 并添加 值 如图 :
该文件 在后面的 源码中有 , 各位童鞋 可以去下载 节省下载时间
在本章里面 我们 没用到界面 所有数据 在 日志中查看
下面看代码
//创建主束
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
保存运行程序 效果如下 :
运行程序会输出 沙盒的地址 ,和我们程序给 给 plist 写入的 值
好了 这一章就到这里, 欢迎 各位童鞋 拍砖 。
代码下载地址 :
http://blog.51cto.com/ext/down_att.php?aid=36012&code=5477
本文出自 “android,unity3d” 博客,请务必保留此出处http://mahaile.blog.51cto.com/2891586/1011678