writing NSDictionary to plist in my app bundle

拥有回忆 提交于 2019-11-26 12:17:51

问题


I\'m trying to write an NSDictionary to a plist but when I open the plist no data has been written to it. From the log my path looks correct and my code is pretty standard. Any ideas?

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];

回答1:


Johan is right -- you're not allowed to modify your app's bundle. You have two good options for where to save your dictionary: the documents directory, which is backed up by iTunes when a user syncs their device; or the caches directory, which is not backed up. If you don't need to have the data backed up, put it in caches so you don't slow down syncing. You can get the directory paths like so:

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

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



回答2:


It doesn't get saved because you can't write into your app's bundle. Save your file elsewhere, in the documents folder for example.



来源:https://stackoverflow.com/questions/2502193/writing-nsdictionary-to-plist-in-my-app-bundle

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!