2013-03-05 111 views
0

Im有空格添加對象到我的2個NSMutableArrays。數據來自數據庫,我知道我的解析是正確的,因爲我使用NSLog時得到有效的輸出。但是我不知道如何將2個不同的對象添加到我的2個不同的NSMutableArrays中。這裏是我的代碼添加對象到NSMutableArray時遇到問題

-(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

你對錯誤信息有什麼想法? – 2013-03-05 18:55:40

+0

我看不到'insertObject:atIndex:'的調用。 – trojanfoe 2013-03-05 18:57:27

+0

@trojanfoe:'addObject:'通過調用。 – 2013-03-05 19:05:37

回答

2

您的解析確實是正確的。但是,當解析器遇到空字段時,它返回nil。問題是NSArrays不能接受nils,因爲nil不是一個對象,它相當於0.因此,你最需要添加一個對象。這是NSNull的作用。

必須測試以查看解析器是否返回nil,如果是,則添加[NSNull null]。

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

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

你搖滾!有效!但是我怎麼不需要爲lableTitle這麼做呢? – RockPaperScissors 2013-03-05 19:10:30

+0

@RockPaperScissors labelTitle沒有回來,因爲零。它的好的做法是在解析後測試全部爲零,除非應該拋出一個無值的錯誤 – TMacGyver 2013-03-05 19:14:00

+0

好的謝謝。真的很感激它! – RockPaperScissors 2013-03-05 19:15:14

1

錯誤消息告訴您,您嘗試添加到數組中的一個對象爲零。

必須更換

[arrayLabel addObject:labelTitle]; 

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

[arraySummary ADDOBJECT:labelSummary]。

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

如果你真的需要包括零對象,然後使用NSNull。