【发布时间】:2012-10-25 21:53:25
【问题描述】:
所以我正在做的事情很简单,从服务器获取一些 JSON 格式的数据。我正在使用 Objective-C 中的默认类(特别是 NSJSONSerialization)将得到的 responseData 转换为 JSON 格式。
所以基本上-
NSString* testURL=@"http://ws.audioscrobbler.com/2.0/?method=track.getsimilar&artist=Kendrick+Lamar&track=A.D.H.D&api_key=e3f53f2f2896b44ff158a586b8ee15c7&format=json";
NSData* data = [NSData dataWithContentsOfURL:[NSURL URLWithString:testURL]];
NSDictionary* json = [NSJSONSerialization
JSONObjectWithData:responseData //1
options:kNilOptions
error:&error];
NSArray* songList = [json objectForKey:@"similartracks"];
问题是,稍后当我尝试访问 JSOn 数据数组中的单个对象时,像这样,
NSDictionary* song1 = [songList objectAtIndex:0];
它给了我这个错误,
* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__NSCFDictionary objectAtIndex:]:无法识别的选择器发送到实例 0x96e2b60”
关于为什么会发生这种情况的任何想法?
感谢您的帮助, 咖啡豆
【问题讨论】:
-
一件简单的事情是在创建
json变量后立即对其进行NSLog。 NSLog 将打印出与原始 JSON 非常相似的表示形式(尽管使用()字符而不是{},如果我没记错的话),所以你可以看到你有什么。然后在“剥离”数据的每一步之后再次使用 NSLog。 (当然,您会在最终代码中删除 NSLog,并添加isKindOfClass检查。)
标签: iphone objective-c ios xcode json