чтение файла plist в Какао - PullRequest
2 голосов
/ 03 октября 2011

У меня есть список, который выглядит, как показано ниже. Какой предпочтительный метод для чтения списков и как я могу прочитать это в массив? Я могу создать NSMutableDictionary, загрузить содержимое этого списка, загрузить ключи в массив, а затем использовать цикл for для чтения двух верхних клавиш - 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 Ответ

3 голосов
/ 03 октября 2011

Если я не ошибаюсь, вы можете получить доступ к этим значениям следующим образом:

NSArray *someData = [dict objectForKey:@"SomeData"];
BOOL key1 = [[[someData objectAtIndex:0] valueForKey:@"Key1"] boolValue];
int key2 = [[[[someData objectAtIndex:0] objectForKey:@"Key2"] objectForKey:@"Key3"] intValue];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...