ios - 如何将对象设置为 plist 文件中的嵌套字典或数组

标签 ios objective-c arrays dictionary plist

我正在尝试为 plist 设置值。 Plist 包含一个数组或一个字典。字典或数组可以包含多个数组或字典和数组中的字典。 所以结构是这样的;

<key>Dictionary</key>
    <dict>
        <key>Dictionary-2</key>
        <dict>
            <key>Array</key>
            <array>
                <array>
                    <dict>
                        <key>Test</key>
                        <string></string>
                    </dict>
                </array>
            </array>
        </dict>
    </dict>

例如。我喜欢更改字符串测试,我该怎么做?当我制作 MutableDictionarys 和 MutableArrays 时,我可以在索引处设置对象。但是我需要用新的字典和数组替换所有其他字典和数组。

有没有更简单的方法?然后替换字典或数组中的每个对象?

最佳答案

当使用 propertyListWithData:options:format:error: 读取属性列表时, 您可以设置 NSPropertyListMutableContainers 选项。

然后返回的属性列表有可变的数组和字典,这样你就可以 只需替换一个内部对象,例如

plist[@"key1"][@"key2"][0][@"Test"] = @"new value;

使用 NSPropertyListMutableContainersAndLeaves 选项,你甚至可以 修改值,例如:

[plist[@"key1"][@"key2"][0][@"Test"] appendString:@"..."];

如果你不知道中间节点是否存在那么你会 必须在必要时创建它们,例如:

if (plist[@"key1"] == nil)
    plist[@"key1"] = [NSMutableDictionary dictionary];
if (plist[@"key1"][@"key2"] == nil)
    plist[@"key1"][@"key2"] = [NSMutableArray array];
if ([plist[@"key1"][@"key2"] count] == 0)
    plist[@"key1"][@"key2"][0] = [NSMutableDictionary dictionary];

plist[@"key1"][@"key2"][0][@"Test"] = @"new value";

关于ios - 如何将对象设置为 plist 文件中的嵌套字典或数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21810860/

相关文章:

ios - 绘图层 : inContext on UILabel

ios - Objective-C if 语句评估

c# - 如何在不在代码中自己指定数组长度的情况下用用户输入填充数组

ios - 在 Xcode 中归档项目时找不到“libxml/tree.h”文件

Objective-C 响应选择器

ios - 是否有一种简单的方法来检查是否存在传递给 NSString 上的 substringWithRange 的 NSRange(这样不会导致错误)?

java - 类型不匹配 : cannot convert from String to int - java

C、使用随机数并将它们存储在数组中

ios - 如何在 Xcode 6 或更高版本中创建类别?

iphone - 自动布局和表格 View 标题