防止应用程序在找不到 valueForKeyPath 时崩溃?



我正在处理一个试图解析的_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找不到错误。有没有办法防止抛出这个错误?

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

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

最新更新