【问题标题】:Prevent app from crashing whenever valueForKeyPath can't be found?每当找不到 valueForKeyPath 时,防止应用程序崩溃?
【发布时间】:2012-02-05 16:34:21
【问题描述】:

我正在处理一个我试图解析的 _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 can't be found 错误。有没有办法防止这个错误被抛出?

【问题讨论】:

    标签: iphone xml xcode parsing nsdictionary


    【解决方案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"]];
    }
    

    【讨论】:

    • 谢谢。您的 if 语句是否需要括号?它还缺少一个右括号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    相关资源
    最近更新 更多