使用plist固化iOS应用数据

对于iOS应用, plist文件可以用来固化应用数据,保存应用设置。比如做一个需要登录的应用,可以把用户输入的用户名和密码保存下来,下次启动应用时可以自动填入,不必重复输入了。

###新建plist文件

在xcode中新建文件,选择iOS-Resources-Property List,输入文件名,选择要放置的group即可。这里我们设置文件名为userData.plist。

###在xcode中修改plist文件

点击建好的plist文件,会打开一个表格,最上面一行是Root,这里是plist的根数据,类型必须是dictionary或array。所有的数据都保存在Root里面。这里我们将Root设置为dictionary。

比如我们需要保存登录地址、用户名、密码三个字符串,就在Root下面新建三个行,类型选择string,key分别是address userName passWord。在value一栏我们可以设置默认值,比如把address设置为192.168.1.101。

###读取和写入plist文件数据

需要注意的是,往application bundle中写文件是做不到的,所以无法往我们刚才新建的plist文件中写入数据。如果想在程序中改写几个键值的内容,需要把plist文件复制到app文档目录中。

获取文档目录的代码如下:

NSString *destPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
destPath = [destPath stringByAppendingPathComponent:@"userData.plist"];

第一次启动应用时这个路径指向的文件还不存在。这时我们把bundle中的文件复制过来。这个动作只会执行这一次。

NSFileManager *fileManager = [NSFileManager defaultManager];        
if (![fileManager fileExistsAtPath:destPath]) {
     NSString *sourcePath = [[NSBundle mainBundle] pathForResource:@"userData" ofType:@"plist"];
     [fileManager copyItemAtPath:sourcePath toPath:destPath error:nil];
}

这时我们就可以通过destPath读写plist中的数据了。先要获取plist的根节点:

NSMutableDictionary userDataDict = [[NSMutableDictionary alloc] initWithContentsOfFile:destPath];

读取数据:

NSString *address = [NSString stringWithFormat:@"%@", [userDataDict objectForKey:@"address"]];

写入数据:

[userDataDict setValue:address forKey:@"address"];
[userDataDict writeToFile:destPath atomically:YES];

注意写入的时候要用我们复制过去的地址destPath,不要弄错了。

转载于:https://my.oschina.net/expectoPatronum/blog/472762

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值