1

JSON を使用して iTunes の RSS フィードを解析していますが、問題が発生しました。次のコードは、movieName 出力の 1 つに対して適切に実行されていますが、まだ movieSummary 出力を取得できません。

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

4

2 に答える 2

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];
}
于 2013-03-16T22:13:35.263 に答える
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
于 2013-03-16T22:23:19.067 に答える