Перебирая значения в NSDictionary выдает ошибку - PullRequest
0 голосов
/ 04 мая 2010

У меня есть файл plist, который я загружаю в NSDictionary * setDictionary, который содержит набор полей, pictureDesc1, pictureDesc2 и т. Д.

После загрузки NSDictionary я могу получить значение с помощью

[setDictionary objectForKey:@"pictureDesc1"];

Но я не могу сделать такой цикл:

for (int i=1; i<=numberOfPictures; i++) {
    NSString *keyName = [NSString stringWithFormat:@"pictureDesc%d",i];
    NSString *description = [NSString stringWithFormat:@"%@", [setDictionary objectForKey:keyName]];
}

Есть ли другой способ динамического вызова ключей из NSDictionary?

1 Ответ

1 голос
/ 04 мая 2010

Если ключи соответствуют числовому шаблону, проще и надежнее хранить их в массиве. Вы даже можете сохранить массив как значение в словаре с ключом «pictureDescription».

Тогда, когда вы захотите пройтись по ним, просто используйте простой числовой цикл:

NSArray *pictArray=[setDictionary valueForKey:@"pictureDescription"];
NSString *description;
for (i=0;i<[pictArray count];i++){
    description=[pictArray objectAtIndex:i];
    //... do whatever
}

Если вы обнаружите, что добавляете функциональность массива в словарь или наоборот, вам, вероятно, следует отказаться и просто использовать массив или словарь. При использовании словаря, просто используйте перечислитель, чтобы просмотреть значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...