无法在找不到valueForKeyPath时阻止应用崩溃?

时间:2012-01-09 02:42:07

标签: iphone xml xcode parsing nsdictionary

我正在处理我试图解析的_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数据,有时这个数据有一个带有"标题的对象"关键,有时它不是。每当服务器发送没有标题密钥的数据(也没有密钥路径)时,我的应用程序崩溃,我得到一个valueForKeyPath找不到错误。有没有办法防止抛出这个错误?

1 个答案:

答案 0 :(得分:1)

您可以使用字典上的allKeys方法转储所有存在的密钥,然后检查特定密钥:

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