我正在尝试将NSDictionary发送到TableViewController,数据最初来自.plist文件。我只想将层次结构中存在的对象发送到新的TableViewController。但是当我尝试计算numberOfSectionsInTableView中的项目数时会出现问题。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// Gets the dictionary for the currently selected row
NSDictionary *dict = [[data objectForKey:[[data allKeys] objectAtIndex:indexPath.section]] objectAtIndex:indexPath.row];
// Checks if the key "Room" exists
if([dict objectForKey:@"Room"]) {
SalesFairSessionTableViewController *sessionViewController = [[SalesFairSessionTableViewController alloc] init];
// Sets the data in the subview Controller
[sessionViewController setData:[dict objectForKey:@"Room"]];
// And the title
[sessionViewController setTitle:[dict objectForKey:@"Title"]];
// Problem is here... returns EXC_BAD_ACCESS
NSLog(@"%@", [[[dict objectForKey:@"Room"] allKeys] count]);
[self.navigationController pushViewController:sessionViewController animated:YES];
[sessionViewController release];
}
}
如果我只是像这样使用allKeys:
NSLog([[dict objectForKey:@"Room"] allKeys]);
它在控制台中返回(“第1项”,“第2项”)。
但是当我添加这样的“count”方法时:
NSLog(@"%@", [[[dict objectForKey:@"Room"] allKeys] count]);
我得到:程序接收信号:“EXC_BAD_ACCESS”。
我在这里缺少什么?
答案 0 :(得分:10)
NSLog(@"%@", [[[dict objectForKey:@"Room"] allKeys] count]);
count给出int
,但是使用%@
进行打印,期望指向对象的指针。请改用%d
。
答案 1 :(得分:3)
正如您的代码目前所代表的那样,您告诉NSLog
字符串需要一个对象。 count
会返回NSInteger
,因此会出错。要修复,请更改此行:
NSLog(@"%@", [[[dict objectForKey:@"Room"] allKeys] count]);
到此:
NSLog(@"%i", [[[dict objectForKey:@"Room"] allKeys] count]);