将数据写入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只能包含的NSDictionary
,NSArray
,NSNumber
和NSString
实例,所以你不能把一个CLLocation
在plist中无需转换。如果您需要保存非Plist对象,请查看NSKeyedArchiver
。它可以从任何采用协议(CLLocation
)的协议创建文件和NSData
对象。
字典数组呢?除了使用数组之外,它会和上面一样吗?它会很好,因为该数组包含NSDictionaries? – jarryd 2011-05-26 20:45:44
字典的阵列很好,数组阵列,数字字典也很好......你明白了。 – omz 2011-05-26 20:50:36
@omz我试过这种阅读方法,但由于某种原因,当我尝试在真实设备上书写时,它会返回旧数据。有任何想法吗? – MikeIsrael 2012-05-03 15:07:00