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

时间:2010-03-23 17:34:46

标签: iphone objective-c cocoa plist nsdictionary

我正在尝试将一个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];

2 个答案:

答案 0 :(得分:24)

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

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

NSString *cachesDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];

答案 1 :(得分:5)

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