在我的应用程序包中编写NSDictionary到plist

ADu*_*ude 9 iphone cocoa objective-c nsdictionary plist

我正在尝试将一个NSDictionary写入plist,但是当我打开plist时,没有数据写入它.从日志中我的路径看起来正确,我的代码非常标准.有任何想法吗?

NSArray *keys = [NSArray arrayWithObjects:@"key1", @"key2", @"key3", nil];
NSArray *objects = [NSArray arrayWithObjects:@"value1", @"value2", @"value3", nil];
NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];

for (id key in dictionary) {
    NSLog(@"key: %@, value: %@", key, [dictionary objectForKey:key]);
}

NSString *path = [[NSBundle mainBundle] pathForResource:@"FormData" ofType:@"plist"];
NSLog(@"path:%@", path);

[dictionary writeToFile:path atomically:YES];
Run Code Online (Sandbox Code Playgroud)

小智 24

约翰是对的 - 你不能修改你的应用程序包.保存字典的位置有两个很好的选择:文档目录,当用户同步设备时由iTunes备份; 或者没有备份的caches目录.如果您不需要备份数据,请将其放在缓存中,这样您就不会减慢同步速度.您可以像这样获取目录路径:

NSString *documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

NSString *cachesDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)


Joh*_*ool 5

它不会被保存,因为您无法写入应用程序的包中.例如,将文件保存在文档文件夹中的其他位置.