iphone - 存储和检索多维 NSMutableArray 的最佳方式是什么?

标签 iphone objective-c nsmutablearray plist nsmutabledictionary

我将一堆数据存储在一个 .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/

相关文章:

objective-c - 这个插入符 ^ 语法,两边都有 void 是什么意思?

objective-c - 连接两个 NSBezierPath

iphone - 在未知的 NSMutableArray 深度中搜索值

ios - 将 NSMutableArray 传递给 Swift 中的另一个对象

iphone - 如何在 iOS 中添加来自特定类别的 iAds?

iphone - UIImage 数据始终处于横向模式

iphone - Xcode 和 admob 第一次做什么?

objective-c - 在 Objective-C 中获取返回对象的类

ios - NSMutableArray 添加元素在 iPhone 中被覆盖

iphone - 如何从子类的UITableViewCell中访问UITableViewController变量?