在 plist 中写入字典有效,然后从 plist 返回中读取字典(空)
Posted
技术标签:
【中文标题】在 plist 中写入字典有效,然后从 plist 返回中读取字典(空)【英文标题】:Write to dictionary in plist works but then read dictionary from plist returns (null) 【发布时间】:2013-01-09 23:53:17 【问题描述】:这就是我在 viewDidLoad 方法中访问 plist 中字典的方式:
NSString* documentsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *fileName = [NSString stringWithFormat:@"Level.plist"];
filePath = [documentsDir stringByAppendingPathComponent:fileName];
array = [[NSMutableArray alloc] initWithContentsOfFile:filePath];
dict = [array objectAtIndex:1];
这很好用,然后我这样写字典:
score = [NSString stringWithFormat:@"%d", score.integerValue + 10];
[dict setObject:score forKey:@"Score"];
[dict writeToFile:filePath atomically: NO];
这也可以正常工作,但是一旦我返回此视图并尝试在 viewDidLoad 方法中再次访问字典,它会为字典返回 (null)。
【问题讨论】:
【参考方案1】:这是因为您将文件作为数组读取,但是当您再次将其写回时,您只是写出字典,而不是包含该字典的数组。如果你尝试使用 NSMutableArray 读取一个 plist 文件,它的根目录不是数组,这将导致它返回 nil。因此,如果您只是在最后一行代码中将 dict
替换为 array
,那应该可以解决问题。
【讨论】:
嗨,谢谢,我后来意识到了这一点,但从未回答过我的问题。以上是关于在 plist 中写入字典有效,然后从 plist 返回中读取字典(空)的主要内容,如果未能解决你的问题,请参考以下文章