将 NSMutableDictionary 保存到 plist iOS
Posted
技术标签:
【中文标题】将 NSMutableDictionary 保存到 plist iOS【英文标题】:Saving NSMutableDictionary to plist iOS 【发布时间】:2012-09-30 11:48:32 【问题描述】:这在过去一天变得非常令人沮丧,而且有点过分了:为什么这不起作用?
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.plist",kAllScoresUnorderedArray]];
NSMutableDictionary *test = [[NSMutableDictionary alloc] init];
[test setObject:@"bob" forKey:@"tmo"];
[test writeToFile:path atomically: YES];
我以前用过它,而且效果很好:我忘记在 info.plist 中添加什么了吗?这是我唯一能想到的。
感谢您的帮助!
编辑: 也许它与 Xcode 4.5 和 ios6 有关?它适用于 4.3/iOS5
【问题讨论】:
当说它不起作用时,你究竟是什么意思?它是否编译、是否崩溃、是否创建文件? 另外,你为什么用stringWithFormat:
而不是stringByAppendingPathExtension:
?
这部分看起来有点可疑:[NSString stringWithFormat:@"%@.plist",kAllScoresUnorderedArray]。 kAllScoresUnorderedArray 中有什么?
@Till no,它不会崩溃,它只是继续运行,就好像代码不存在一样..
@PeterHosey 我从未听说过后者:我从教程中获得了代码,它以前对我有用。
【参考方案1】:
您是否已将 .plist 文件添加到您的项目中?如果是这样,试试这个:
NSError *error;
NSFileManager *fileManager = [[NSFileManager alloc] init];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.plist",kAllScoresUnorderedArray]];
if (![fileManager fileExistsAtPath: path])
NSString *bundle = [[NSBundle mainBundle] pathForResource:kAllScoresUnorderedArray ofType:@"plist"];
[fileManager copyItemAtPath:bundle toPath: path error:&error];
NSMutableDictionary *test = [[NSMutableDictionary alloc] initWithContentsOfFile: path];
[test setObject:@"bob" forKey:@"tmo"];
[test writeToFile:path atomically: YES];
如果没有,请在您的项目中创建属性列表。
【讨论】:
以上是关于将 NSMutableDictionary 保存到 plist iOS的主要内容,如果未能解决你的问题,请参考以下文章
将 NSMutableDictionary 保存到 plist iOS
将 NSMutableDictionary 保存到 plist 问题中
读取和写入 NSMutableDictionary 到 plist 文件