首先,谢谢大家的帮助到目前为止,stackoverflow是一个很棒的社区!!
此plist在加载应用程序时存在,目前看起来像这样:
<plist version="1.0">
<dict>
<key>Roast</key>
<array>
<array>
<string>Chicken</string>
<string>200c, Grill</string>
<string>01:00</string>
<string>chicken.jpg</string>
<array>
<string>00:30</string>
<string>Baste</string>
</array>
</array>
<array>
<string>Veg</string>
<string>200c, Grill</string>
<string>00:20</string>
<string>veg.jpg</string>
</array>
<array>
<string>Gravy</string>
<string>High heat pan</string>
<string>00:10</string>
<string>gravy.jpg</string>
<array>
<string>00:05</string>
<string>Stir</string>
</array>
</array>
</array>
</dict>
</plist>
澄清:
我正在尝试做什么:
我希望用户能够添加自己的密钥,然后在其中添加项目,或者在现有密钥中添加项目。示例:用户想要将“青豆”添加到密钥中:与相应的信息一起烤:中火煮沸,00:10,greens.jpg。
我目前所做的事情:
将plist加载到字典中,尝试将用户条目保存到现有密钥中,但它似乎只是创建一个新密钥,尽管使用相同的密钥值。
我被困的地方:
我想找个方法说:如果存在一个名为'Roast'的密钥,那么进入该密钥,并在以下结构中添加以下值。是否有捷径可寻?或者也许有一种方法可以获取现有密钥的“位置”,然后使用该位置添加到可变字典中,然后将其存储到plist中?也许我的结构也不正确?如果有人可以告诉我如何将结构值添加到2级,那么我将非常感激,那么我应该能够弄明白。
事先,非常感谢你们迄今为止的所有帮助!
此致 SineTwo
答案 0 :(得分:1)
由于你有一个plist,你可以从plist
的NSMutableDictionary中获得NSString *plistPath = [[NSBundle mainBundle]pathForResource:@"plistName" forType:@"plist"];
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithContentsOfFile:plistPath];
NSMutableArray *roastItems = [dict[@"Roast"] mutableCopy];
您可以将项目添加到roastItems
。
//Modifed roast items is added back to the root dictionary
[dict setObject:roastItems forKey:@"Roast"];
如果您要添加新类别,请将新密钥和相应值添加到dict
NSString *newCategoryName = @"NewCategory";
NSArray *categoryItems = //User populated array;
[dict setObject:categoryItems forKey:newCategoryName];
//Save the modified dict to plist
[dict writeToFile:plistPath atomically:YES];
编辑:
plist的结构可以制成这样,组织模型很容易
<plist version="1.0">
<array>
<dict>
<key>CategoryName</key>
<string>Roast</string>
<key>CategoryItems</key>
<array>
<dict>
<key>ItemName</key>
<string>Chicken</string>
<key>Type</key>
<string>Grill</string>
<key>Time</key>
<string>01:00</string>
<key>ImageName</key>
<string>image.jpg</string>
</dict>
</array>
</dict>
</array>
</plist>
这样你的root就是一个类别数组。每个类别都有自己的名称和项目。类别项目将具有名称,类型,时间等。
因此,当您想要创建新类别时,请创建一个包含类别名称和类别项目数组的字典。类别项目将有自己的项目名称,类型,时间等。非常干净和优雅。可以将任意数量的项目添加到类别项目。