将数据写入plist

问题描述:

我想从plist读取数据,添加一些元素并将数据写入plist(更新plist)。将数据写入plist

我想让plist拥有一个字典数组,将此数组读入我的应用程序,添加字典,然后将数组写回plist。

这是如何完成的?我也不确定在第一次启动应用程序时在哪里以及如何创建plist。还是应该从一开始就把它放在包里?

我不确定的另一件事是如果plist字典可以容纳例如CLLocations作为键的值?它会被正确保存还是需要将CLLocation分解为经度和纬度值?

感谢

创建从一个plist中词典的最简单方法是使用方法dictionaryWithContentsOfFile:,例如,从您的资源加载的plist:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"MyPlist" ofType:@"plist"]; 
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithContentsOfFile:filePath]; 

写的plist同样简单:

[dict writeToFile:filePath atomically:YES]; 

(请注意,你不能写到您的应用程序的资源,所以你必须在你的文档直接创建一个不同的路径,例如ORY,见NSSearchPathForDirectoriesInDomains

的Plist只能包含的NSDictionaryNSArrayNSNumberNSString实例,所以你不能把一个CLLocation在plist中无需转换。如果您需要保存非Plist对象,请查看NSKeyedArchiver。它可以从任何采用协议(CLLocation)的协议创建文件和NSData对象。

+0

字典数组呢?除了使用数组之外,它会和上面一样吗?它会很好,因为该数组包含NSDictionaries? – jarryd 2011-05-26 20:45:44

+1

字典的阵列很好,数组阵列,数字字典也很好......你明白了。 – omz 2011-05-26 20:50:36

+0

@omz我试过这种阅读方法,但由于某种原因,当我尝试在真实设备上书写时,它会返回旧数据。有任何想法吗? – MikeIsrael 2012-05-03 15:07:00