2
NSURL *jsonURL = [NSURL URLWithString:stringURL];
NSData *jsonData = [NSData dataWithContentsOfURL:jsonURL];
NSDictionary *jsonArray = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:nil];
NSString *stringImageURL = [jsonArray valueForKey:@"artworkUrl100"];

最後の行が問題です。配列を完全に取得できますが、の値stringImageURLは nil です。以下で強調表示されているキーを正しく取得するにはどうすればよいですか?

使用したい NSDictionary 値

4

2 に答える 2

4
NSString *stringImageURL = [jsonArray valueForKey:@"artworkUrl100"];

する必要があります

NSString *stringImageURL = [[[jsonArray valueForKey:@"result"]
                                      objectAtIndex:0]
                                        valueForKey:@"artworkUrl100"];

または、より簡潔に

NSString *stringImageURL = jsonArray[@"result"][0][@"artworkUrl100"]; 

なんで?

データはあなたが思っていたよりも 2 レベル深くネストされていました。あなたが求めていたディクショナリの値は、配列内の別のディクショナリの key の下に含まれていましたresult

于 2013-02-16T21:07:47.380 に答える
2

まず、jsonArray は配列ではなく辞書です。

次に、辞書の配列を持つ辞書があるように見えるので、次のようになります。

NSArray *resultsArray = [jsonArray valueForKey:@"results"];
NSDictionary *resultDict = [resultsArray objectAtIndex:0];
NSString *stringImageURL = [resultDict valueForKey:@"artworkUrl100"];
于 2013-02-16T21:09:43.900 に答える