繁体   English   中英

将对象添加到NSMutableArray时遇到问题

[英]Having trouble adding objects to NSMutableArray

我在将对象添加到我的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'

任何帮助表示赞赏。

您的解析确实是正确的。 但是,当解析器遇到一个空字段时,它将返回nil。 问题在于NSArrays无法接受nils,因为nil不是对象,它等于0。因此,您最多添加一个对象。 NSNull的作用。

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

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

[arraySummary addObject:(labelSummary!=nil)?labelSummary:[NSNull null];

该错误消息告诉您您要添加到数组中的对象之一为nil。

你必须更换

[arrayLabel addObject:labelTitle];

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

[arraySummary addObject:labelSummary];

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

如果确实需要包含nil对象,则使用NSNull。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM