我想从plist中读取数据,添加一些元素并将数据写入plist。(更新plist)。
我想让plist持有一个字典数组,将这个数组读入我的应用程序,添加字典然后将数组写回plist。
这是怎么做到的?我也不确定在应用程序首次启动时在何处以及如何创建plist。还是应该从一开始就放在捆绑中?
另一件我不确定的事情是,如果plist词典可以保持例如CLLocations作为键的值?它会被正确保存还是需要将CLLocation分解为lat和lon值?
由于
答案 0 :(得分:6)
从plist创建字典的最简单方法是使用方法dictionaryWithContentsOfFile:
,例如,从资源加载plist:
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"MyPlist" ofType:@"plist"];
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithContentsOfFile:filePath];
编写一个plist同样简单:
[dict writeToFile:filePath atomically:YES];
(请注意,您无法写入应用的资源,因此您必须创建不同的路径,例如在文档目录中,请参阅NSSearchPathForDirectoriesInDomains
)
Plists只能包含NSDictionary
,NSArray
,NSNumber
和NSString
的实例,因此您无法在不转换的情况下将CLLocation
放入Plist中。如果您需要保存非Plist对象,请查看NSKeyedArchiver
。它可以从采用NSData
协议(NSCoding
协议)的任何内容创建文件和CLLocation
对象。