我正在尝试将值设置为plist。 Plist包含数组或字典。 Dictionary或Array可以在Dictionarys和Arrays中保存多个Arrays或Dictionarys。 所以结构是这样的;
<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>
所以,例如。我想更改字符串Test,我该怎么做?当我创建MutableDictionarys和MutableArrays时,我可以将对象设置为index。但是我需要用新的字典和数组替换所有其他字典和数组。
有更简单的方法吗?然后替换字典或数组中的每个对象?
答案 0 :(得分:2)
使用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";