将数据写入plist

jar*_*ryd 3 iphone plist mapkit

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

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

这是怎么做到的?我也不确定在应用程序首次启动时在何处以及如何创建plist.还是应该从一开始就放在捆绑中?

另一件我不确定的事情是,plist词典是否可以将CLLocations保存为键的值?它会被正确保存还是需要将CLLocation分解为lat和lon值?

谢谢

omz*_*omz 6

从plist创建字典的最简单方法是使用该方法dictionaryWithContentsOfFile:,例如,从资源加载plist:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"MyPlist" ofType:@"plist"];
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithContentsOfFile:filePath];
Run Code Online (Sandbox Code Playgroud)

编写一个plist同样简单:

[dict writeToFile:filePath atomically:YES];
Run Code Online (Sandbox Code Playgroud)

(请注意,您无法写入应用程序的资源,因此您必须创建不同的路径,例如在Documents目录中,请参阅NSSearchPathForDirectoriesInDomains)

Plist档案只能包含的情况下NSDictionary,NSArray,NSNumberNSString,所以你不能把CLLocation一个plist中无需转换.如果您需要保存非Plist对象,请查看NSKeyedArchiver.它可以NSData从采用NSCoding协议(CLLocation确实)的任何东西创建文件和对象.