我正在尝试为 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/