#cocoa #plist
#какао #plist
Вопрос:
У меня есть список, который выглядит как показано ниже. Какой предпочтительный метод чтения plist и как мне прочитать это в массив? Я могу создать NSMutableDictionary
, загрузить содержимое этого списка, загрузить ключи в массив, а затем использовать цикл for для чтения 2 верхних ключей — SomeData
и MoreData
. Но я не могу проанализировать все остальные ключи ( Key1
, Key2
и Key3
). Как бы я это сделал? Вставленный ниже код, который проходит через верхние 2 ключа. ( SomeData
и MoreData
). Спасибо.
Plist:
<?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>SomeData</key>
<array>
<dict>
<key>Key1</key>
<false/>
<key>Key2</key>
<dict>
<key>Key3</key>
<integer>0</integer>
</dict>
</dict>
</array>
<key> MoreData</key>
</dict>
</plist>
Код:
-(IBAction)modifyPlist:(id)sender{
NSLog(@"Listing Keys");
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithContentsOfFile:@"/Users/sureshb/Documents/myprogs/plistMod/com.test.plist"];
NSArray *keys = [dict allKeys];
for (NSString *key in keys){
NSLog(@"%@",key);
}
}
Ответ №1:
Если я не ошибаюсь, вы можете получить доступ к этим значениям следующим образом:
NSArray *someData = [dict objectForKey:@"SomeData"];
BOOL key1 = [[[someData objectAtIndex:0] valueForKey:@"Key1"] boolValue];
int key2 = [[[[someData objectAtIndex:0] objectForKey:@"Key2"] objectForKey:@"Key3"] intValue];