我将一堆数据存储在一个 .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
当整个事情发生时可变的。
有没有更简单/更好的方法来做到这一点?如果它有所作为,我的数据只是整数和 bool 值。
最佳答案
您应该使用 NSPropertyListSerialization
,而不是编写所有自定义类垃圾。具体请参见 propertyListWithData:options:format:error:
方法。用法示例:
NSMutableDictionary *d = [NSPropertyListSerialization propertyListWithData:[NSData dataWithContentsOfFile:@"path/to/file"]
options:NSPropertyListMutableContainers
format:NULL
error:NULL];
这将使所有容器可变,但保持叶节点(例如 NSStrings)不可变。还有一个选项可以使叶子也可变。
关于iphone - 存储和检索多维 NSMutableArray 的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2136905/