2013-02-27 60 views
1

我使用JSON解析了itunes rss提要,但遇到了問題。下面的代碼正確運行一個movieName輸出,但我仍然沒有得到movieSummary輸出,請幫助我。如何解析JSON並擁有2個最終數據陣列

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

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

    for (NSDictionary *dictionTitle in arrayOfEntry) { 

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

     [arrayLable addObject:labelTitle]; 

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

     [arraySummary addObject:labelSummary]; 
    } 

    movieName.text = [arrayLable objectAtIndex:0]; 
    movieSummary.text = [arraySummary objectAtIndex:0]; //This is not displaying 
} 

這裏是我解析鏈接:http://itunes.apple.com/us/rss/topmovies/limit=300/json

任何幫助,將不勝感激。

+0

也許一個愚蠢的問題,但你初始化'arraySummary'? – rickerbh 2013-02-27 04:14:02

+0

只要我這樣做,應用程序崩潰。這是我在做什麼初始化2數組arrayLable = [[NSMutableArray alloc] init]; [arrayLable removeAllObjects]; arraySummary = [[NSMutableArray alloc] init]; [arraySummary removeAllObjects];雖然已經有了arrayLable初始化的應用程序,只要我初始化arraySummary它崩潰。 – RockPaperScissors 2013-02-27 06:31:33

+0

你如何定義/聲明arraySummary? – rickerbh 2013-02-27 06:34:14

回答

0

我碰到這種情況很多。我使用這樣的東西。更換你的代碼

NSString *labelTitle = [title objectForKey:@"label"]; 
[arrayLable addObject:labelTitle]; 

NSString * labelTitle = [ [ title objectForKey:@"label" ] ifNullThenNil ] ; 
[ arrayLabel addObject:labelTitle ? labelTitle : @"" ] ; // you could also use @"<unknown>" or similar instead of @"" 

其中-ifNullThenNil通過類別提供:

@implementation NSObject (IfNullThenNil) 
-(id)ifNullThenNil { return self ; } 
@end 

@implementation NSNull (IfNullThenNil) 
-(id)ifNullThenNil { return nil ; } 
@end 
+0

是的這看起來更清潔和更簡單,很坦白 – RockPaperScissors 2013-03-17 10:39:06

0

的問題是,當我加入字符串數組,它有時包含NULL的這樣下面的代碼幫了我

if ([[arrayName objectAtIndex:0] isKindOfClass:[NSNull class]]) { 
    labelName.text = @"This is NULL"; 
} else { 
    [arrayName addObject:labelName]; 
} 

    if ([[arraySummary objectAtIndex:0] isKindOfClass:[NSNull class]]) { 
    labelSummary.text = @"This is NULL"; 
} else { 
    [arraySummary addObject:labelSummary]; 
} 
+0

我添加了一個更完整的答案... – nielsbot 2013-03-16 22:34:09