我正在开发一个涉及多个表视图的应用程序。该应用程序使用导航控制器,我设置了一个故事板来处理转换。我目前设置了其中两个视图,一个用于“区域”,对象类型为“区域”,另一个用于“类别”,对象类型为“类别”。在每个视图的代码中,我使用 RestKit 将适当的数据加载到一个数组中,然后使用该数据数组来创建表。如果先查看,每个视图都可以单独运行。但是,当我转换到一个视图、关闭它并尝试移动到另一个视图时,我的应用程序崩溃了。显示的异常表明将错误类型的数据加载到表的数组中。例如,如果我先转到类别视图,然后切换到“
编辑——这是将数据加载到表格单元格中的代码,以及一些说明。
如果每个表是要加载的第一个表,则每个表都包含正确的数据。只有在切换到另一个表视图时才会发生崩溃。异常已被注释到它们发生的代码中。“categoryName”和“regionName”是它们各自类型的属性。
地区:
在顶部,我创建了数组区域:
@interface RegionListingsController () {
NSArray *regions;
}
Restkit onDidLoadObjects 方法:
loader.onDidLoadObjects = ^(NSArray *objects) {
NSLog(@"Objects Loaded");
regions = nil;
regions = objects;
[self.tableView reloadData];
};
创建表格单元格:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
Region *region = [[Region alloc] init];
region = nil;
region = [regions objectAtIndex:indexPath.row];
NSLog(@"region");
cell.textLabel.text = region.regionName; // Exception: Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Category regionName]: unrecognized selector sent to instance 0xce87240'
return cell;
}
分类:
这大致相同,只是使用类别数组而不是区域数组。数组:@interface CategoryListingsController () { NSArray *categories; }
onDidLoadObjects:
loader.onDidLoadObjects = ^(NSArray *objects) {
NSLog(@"Objects Loaded");
categories = objects;
objects = nil;
[self.tableView reloadData];
};
表格单元格:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
Category *category = [[Category alloc] init];
category = nil;
category = [categories objectAtIndex:indexPath.row];
NSLog(@"Category Cell");
cell.textLabel.text = category.categoryName; // Exception: Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Region categoryName]: unrecognized selector sent to instance 0xce87240'
NSLog(@"Cell returned");
return cell;
}