奇怪的行为从plist文件读取字典

时间:2012-05-24 09:20:01

标签: objective-c ios plist nsmutabledictionary

当我读取一个字符串的非空并且至少有一个键值对到我的模型类的NSMutableDictionary属性时,一切正常。 我可以添加,删除修改可变字典。

但是当字典为空时

你可以看到带有这样标记的plist:

<dict/>

然后,即使我的属性有一个NSMutableDictionary指针,创建的Object也变为不可变。

当我尝试在其中为特定属性设置对象时, 它给了我这个错误说:

'NSInternalInconsistencyException', reason: '-[__NSCFDictionary setObject:forKey:]: mutating method sent to immutable object'

2 个答案:

答案 0 :(得分:2)

NSMutableDictionary *mutable = [yourApparentlyMutableDictionary mutableCopy];

答案 1 :(得分:1)

非常确定从plist中检索的所有对象都是不可变的变体。我确实认为我看到了将它们反序列化为可变的选项。

编辑:

这篇文章解释了如何将plist解压缩为可变的:

http://cocoadev.com/wiki/PropertyList