美好的一天!如何处理嵌套属性列表
我在iOS中做一个嵌套的属性列表有问题。
因此,有两个UITextField
s将接受一个随机值,然后将其保存到属性列表。问题是,当我输入第二个值时,它将覆盖我的属性列表中的第一个值。
如何处理或编写嵌套属性列表?
这里是我尝试代码:
- (IBAction)writeToPlist:(id)sender
{
NSLog(@"Write.");
NSString *finalPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"Data.plist"];
NSMutableDictionary *fruitDictionary = [[NSMutableDictionary alloc] init];
NSString *fruitName = [[NSString alloc] initWithString:[fruitNameField text]];
NSString *fruitDescription = [[NSString alloc] initWithString:[fruitDescriptionField text]];
NSDictionary *fruitDetail = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:fruitName, fruitDescription, nil]
forKeys:[NSArray arrayWithObjects:@"Fruit", @"Description", nil]];
NSMutableDictionary *fruitPlist = [[NSMutableDictionary alloc] initWithContentsOfFile:finalPath];
NSMutableArray *fruitArray = [fruitPlist objectForKey:fruitName];
if (fruitArray == nil) {
fruitArray = [[NSMutableArray alloc] init];
}
[fruitDictionary setObject:fruitDetail forKey:fruitName];
[fruitArray addObject:fruitDictionary];
[fruitArray writeToFile:finalPath atomically:YES];
[[self presentingViewController] dismissViewControllerAnimated:YES
completion:nil];
}
输出是:
<plist version="1.0">
<array>
<dict>
<key>Apple</key>
<dict>
<key>Description</key>
<string>Red</string>
<key>Fruit</key>
<string>Apple</string>
</dict>
</dict>
</array>
</plist>
我希望发生的是:
<plist version="1.0">
<array>
<dict>
<key>Apple</key>
<dict>
<key>Description</key>
<string>Red</string>
<key>Fruit</key>
<string>Apple</string>
</dict>
</dict>
<dict>
<key>Banana</key>
<dict>
<key>Description</key>
<string>Yellow</string>
<key>Fruit</key>
<string>Banana</string>
</dict>
</dict>
</array>
</plist>
顺便说一句,是我的代码可以接受或不?我的意思是,有什么办法可以缩短它吗?
Data.plist不会出现在目录中。 – Jahm
OOPS !!我有点忘了第一次添加数组。看我的编辑。 –