我将一堆数据存储在 .plist 文件(在应用程序文档文件夹中)中,其结构如下:
Dictionary {
"description" = "String Value",
"sections" = Array (
Array (
Number,
...
Number
),
Array (
Number,
...
Number
)
),
"items" = Array (
Array (
Number,
...
Number
),
Array (
Number,
...
Number
)
)
}
如果我只是检索它
NSMutableDictionary *d = [[NSMutableDictionary alloc] initWithContentsOfFile:plistFile]
我无法替换数字对象,对吗?
所以我现在正在递归数据并形成整个事情的可变版本,它在一个实例中起作用,但现在它告诉我mutating method sent to immutable object
当整个事情都是可变的。
有没有更简单/更好的方法来做到这一点?如果有什么不同的话,我的数据只是整数和布尔值。
您应该使用而不是编写所有自定义类垃圾NSPropertyListSerialization
。具体请参见propertyListWithData:options:format:error:
方法。用法示例:
NSMutableDictionary *d = [NSPropertyListSerialization propertyListWithData:[NSData dataWithContentsOfFile:@"path/to/file"]
options:NSPropertyListMutableContainers
format:NULL
error:NULL];
这将使所有容器可变,但保持叶节点(例如 NSStrings)不可变。还有一个选项可以使叶子也可变。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)