Предотвратить сбой приложения, когда значение ValueForKeyPath не может быть найдено? - PullRequest
1 голос
/ 09 января 2012

Я имею дело с _NSDictionary, который я пытаюсь проанализировать. Я использую этот код

NSDictionary *nextArray = [_classDictionary 
valueForKeyPath:@"response.page_records.page_record"];
for (NSDictionary *roster2 in nextArray) {
    [pageName addObject:[roster2 objectForKey:@"title"]];
    [pageID addObject:[roster2 objectForKey:@"id"]];
}

Проблема в том, что этот NSDictionary преобразован в XML-данные с сервера, и иногда эти данные имеют объект с ключом «title», а иногда нет. Всякий раз, когда сервер отправляет данные без ключа заголовка (а также без ключевого пути), мое приложение вылетает, и я получаю ошибку valueForKeyPath, которая не может быть найдена. Есть ли способ предотвратить появление этой ошибки?

1 Ответ

1 голос
/ 09 января 2012

Вы можете использовать метод allKeys в словаре, чтобы сбросить все имеющиеся ключи, а затем проверить наличие определенного ключа:

for (NSDictionary *roster2 in nextArray) {
    NSArray *keys = [roster2 allKeys];
    if ([keys containsObject:@"title"]
        [pageName addObject:[roster2 objectForKey:@"title"]];
    [pageID addObject:[roster2 objectForKey:@"id"]];
}
...