在此代码中:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
//---initialize the array---
listOfJMovies = [[NSMutableArray alloc] init];
listOfJMoviePosters = [[NSMutableArray alloc] init];
tmdbMovies = [[NSArray alloc] init];
posters = [[NSArray alloc] init];
thumbs = [[NSArray alloc] init];
//---set the title---
self.navigationItem.title = @"Movies";
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
//NSLog(responseString);
SBJsonParser *json = [[SBJsonParser new] autorelease];
tmdbMovies = [json objectWithString:responseString error:nil];
for (id movie in tmdbMovies) {
[listOfJMovies addObject:[movie objectForKey:@"name"]];
NSLog(@"Name: %@", [movie objectForKey:@"name"]);
//[listOfJMoviePosters addObject:[obj objectForKey:@"posters"]];
//NSLog(@"%@", [obj objectForKey:@"posters"]);
posters = [movie objectForKey:@"posters"];
for (id image in posters) {
NSLog(@"image: %@", [image objectForKey:@"image"]);
thumbs = [image objectForKey:@"image"];
for (id url in thumbs) {
NSLog(@"Size: %@", [url objectForKey:@"size"]);
//NSLog(@"blah");
//[listOfJMoviePosters addObject:[url objectForKey:@"size"]];
}
}
}
[[self tableView] reloadData];
[responseString release];
[connection release];
[responseData release];
}
这一行:NSLog(@“Size:%@”,[url objectForKey:@“size”]);
导致应用崩溃并抛出以下错误:
2010-12-30 00:33:29.730 FlixIt [33132:207] - [NSCFString objectForKey:]:无法识别的选择器发送到实例0x4e50f00 2010-12-30 00:33:29.732 FlixIt [33132:207] * 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [NSCFString objectForKey:]:无法识别的选择器发送到实例0x4e50f00 “
答案 0 :(得分:2)
从查看数据结构来看,在我看来你有一个额外的循环。在“海报”循环中尝试:
for (id image in posters) {
NSLog(@"image: %@", [image objectForKey:@"image"]);
thumbs = [image objectForKey:@"image"];
NSLog(@"Size: %@", [thumbs objectForKey:@"size"]);
}
image是一个字典,键“size”具有NSString类型。
答案 1 :(得分:1)
根据它的外观url
属于NSString
类型,它不响应方法objectForKey:
。换句话说,NSString
未实现该方法。如果您知道在for
循环中期望的对象类型,那么如果您在声明中使用了特定类型而不是id
,那么您将获得一些额外的编译器检查。
我不熟悉SBJSonParser
,但我认为您操作的大部分内容都返回为NSDictionary
,哪些特定字段作为更详细的类型返回(例如字符串为{{1} }})。
我还假设通过查询'size'你实际上在寻找字符串的长度?在这种情况下,您需要使用NSString
方法。如果这不是你想要做的,那么更多的信息会很有用。
举例来说,我已经提取了一小段代码。
length
答案 2 :(得分:0)
希望这对某人有帮助。
这不是代码答案,但我收到了确切的错误消息,并通过以下方式修复了问题:
* 1-清理构建文件夹
* 2-清除派生数据
* 3-删除模拟器和/或设备上的应用程序。
就我而言,我在不同的分支上添加了一堆框架。当我切换分支机构时,我需要彻底清除该项目。