0

我很难将对象添加到我的 2 个 NSMutableArrays。数据来自数据库,我知道我的解析是正确的,因为我在使用 NSLog 时得到了有效的输出。但是我不知道如何将 2 个不同的对象添加到我的 2 个不同的 NSMutableArrays 中。这是我的代码

-(void)connectionDidFinishLoading:(NSURLConnection *)connection {

     allDataDictionary = [NSJSONSerialization JSONObjectWithData:webData options:0 error:nil];
     feed = [allDataDictionary objectForKey:@"feed"];
     arrayOfEntry = [feed objectForKey:@"entry"];

     for (NSDictionary *dictionary in arrayOfEntry) {

         NSDictionary *title = [dictionary objectForKey:@"title"];
         NSString     *labelTitle = [title objectForKey:@"label"];

         [arrayLabel addObject:labelTitle];

         NSDictionary *summary = [dictionary objectForKey:@"summary"];
         NSString     *labelSummary = [summary objectForKey:@"label"]; 

         [arraySummary addObject:labelSummary]; //This line makes the application crash

     }

}

出于某种原因,当我想将 labelSummary 添加到 arraySummary 时,我收到此错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'

任何帮助表示赞赏。

4

2 回答 2

2

你的解析确实是正确的。但是,当解析器遇到一个空字段时,它会返回 nil。问题是 NSArrays 不能接受 nil,因为 nil 不是对象,它相当于 0。因此,您最多添加一个对象。这就是 NSNull 的作用。

必须测试以查看解析器是否返回 nil,如果是则添加 [NSNull null]。

NSString* labelSummary = [summary objectForKey:@"label"]; 

[arraySummary addObject:(labelSummary!=nil)?labelSummary:[NSNull null];
于 2013-03-05T19:03:30.263 回答
1

错误消息告诉您,您尝试添加到数组中的对象之一是 nil。

你必须更换

[arrayLabel addObject:labelTitle];

if (labelTitle != nil) {
   [arrayLabel addObject:labelTitle];
}

[arraySummary addObject:labelSummary];

if (labelSummary != nil) {
   [arraySummary addObject:labelSummary];
}

如果你真的需要包含一个 nil 对象,那么使用 NSNull。

于 2013-03-05T19:07:45.753 回答