У меня есть листинг:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>1</key>
<dict>
<key>a</key>
<string>a1</string>
<key>b</key>
<string>b1</string>
</dict>
<key>2</key>
<dict>
<key>a</key>
<string>a2</string>
<key>b</key>
<string>b2</string>
</dict>
<key>3</key>
<dict>
<key>a</key>
<string>a3</string>
<key>b</key>
<string>b3</string>
</dict>
</dict>
</plist>
... с которого я начинаю изменчивый словарь (см. Ниже). Я могу легко ссылаться на строку с помощью вызова вложенного метода:
NSLog(@"%@", [[plistItems objectForKey:@"1"] objectForKey:@"a"]);
Есть ли способ, которым я могу сделать setObect для этого конкретного ключа с помощью подобного вложенного метода, или мне нужно сделать это более длинным способом, как показано?
-(void) writeOneItemInADictionary
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"Plist3" ofType:@"plist"];
NSMutableDictionary *plistItems = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
//This will return an object for a specific key:
//NSLog(@"%@", [[plistItems objectForKey:@"1"] objectForKey:@"a"]);
NSString *stringTemp = [[NSString alloc] initWithString: @"a1 modified"];
//I want to do something similar with setObject,to modify a1:
//[[plistItems setObject:stringTemp forKey:@"1"]forKey:@"a"]]; //not correct - does not work
//Or do I have to do it this longer way?:
NSMutableDictionary *plistSubItems = [[NSMutableDictionary alloc] init];
plistSubItems = [plistItems objectForKey:@"1"];
[plistSubItems setObject:stringTemp forKey:@"a"];
NSLog(@"plistSubItems: %@", plistSubItems);
NSLog(@"plistItems %@", plistItems); //longer way works fine
}
(управление памятью не включено)