1

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

但是当字典为空时

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

<dict/>

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

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

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

4

2 回答 2

2
NSMutableDictionary *mutable = [yourApparentlyMutableDictionary mutableCopy];
于 2012-05-24T09:22:41.357 回答
1

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

编辑:

本文解释了如何将 plist 取消归档为可变:

http://cocoadev.com/wiki/PropertyList

于 2012-05-24T09:29:22.207 回答