2013-02-27 61 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