我正在尝试从Instagram获取JSON提要以在我的UITableView中显示数据。但是我收到以下错误,我无法弄清楚问题是什么:
2013-08-18 10:20:37.361 ttoauth [38213:c07] - [__ NSCFDictionary objectAtIndex:]:无法识别的选择器发送到实例0x75d7480
2013-08-18 10:20:37.362 ttoauth [38213:c07] ***由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [__ NSCFDictionary objectAtIndex:]:无法识别的选择器发送到实例0x75d7480'
***第一次抛出调用堆栈: (0x13c8012 0x11ede7e 0x14534bd 0x13b7bbc 0x13b794e 0x3f68 0x1ec8fb 0x1ec9cf 0x1d51bb 0x1e5b4b 0x1822dd 0x12016b0 0x26abfc0 0x26a033c 0x26a0150 0x261e0bc 0x261f227 0x261f8e2 0x1390afe 0x1390a3d 0x136e7c2 0x136df44 0x136de1b 0x22c57e3 0x22c5668 0x131ffc 0x2a4d 0x2975) libc ++ abi.dylib:terminate调用抛出异常
这是我的代码:
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
return [jsonResults count];
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
CustomCell *cell = (CustomCell *)[self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
NSDictionary *instafeed_tableview = [jsonResults objectAtIndex:indexPath.row];
NSString *username_label = [[instafeed_tableview objectForKey:@"from"] valueForKey:@"username"];
cell.username.text = [NSString stringWithFormat:@"%@", username_label];
cell.username.clipsToBounds = YES;
cell.contentView.clipsToBounds = NO;
return cell;
}
-(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
-(CGFloat)tableView :(UITableView *)tableView heightForRowAtIndexPath :(NSIndexPath *)indexPath {
return 191;
}
我做错了什么?
答案 0 :(得分:0)
reason: '-[__NSCFDictionary objectAtIndex:]: unrecognized selector sent to instance 0x75d7480
此行告诉您使用objectAtIndex
(NSArray
方法)NSDictionary
。由于您收到的内容为NSDictionary
,因此您希望将其用作NSArray
。
可能你的错误行是:
NSDictionary *instafeed_tableview = [jsonResults objectAtIndex:indexPath.row];
尝试调试它。我认为您的jsonResults
NSDictionary
不是NSArray
。
在此行和输出类型中添加断点:po [jsonResults class];
。
根据评论编辑
你错了。这不是你从JSON设置你想要的数据类型的人。 JSON结构决定了这一点。例如:
[
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
此示例中的NSArray
包含NSDictionaries
。
{
"name":"John" ,
"surname":"Doe"
},
这将返回单NSDictionary
此[]
和此{}
括号确定您要处理的对象。