首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将对象设置为plist文件中的嵌套字典或数组

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

Stack Overflow用户
提问于 2014-02-16 20:07:57
回答 1查看 520关注 0票数 0

我正在尝试将值设置为plist。Plist包含一个Array或Dictionary。Dictionary或Array可以在Dictionarys和数组中保存多个数组或Dictionarys。所以结构是这样的,

代码语言:javascript
复制
<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时,我可以将对象设置为索引。但是,我需要用新的字典和数组替换所有其他字典和数组。

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

EN

回答 1

Stack Overflow用户

发布于 2014-02-16 20:15:52

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

然后返回的属性列表具有可变的数组和字典,因此您只需替换内部对象,例如

代码语言:javascript
复制
plist[@"key1"][@"key2"][0][@"Test"] = @"new value;

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

代码语言:javascript
复制
[plist[@"key1"][@"key2"][0][@"Test"] appendString:@"..."];

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

代码语言:javascript
复制
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";
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21810860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档