我正在使用核心数据来获取实体。我只希望这些结果显示在我的tableview的第二部分中,而另一部分显示的内容...我的应用程序没有崩溃,但是获取的数据没有显示在表视图中...我也很确定我正确地获取数据。
这是一些代码。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
if (indexPath.section==0){
switch (indexPath.row) {
case 0:
cell.textLabel.text = _team.teamName;
break;
case 1:
cell.textLabel.text = _team.headCoach;
break;
default:
break;
}
}
if (indexPath.section ==1) {
Player *p = [_fetchedResultsController objectAtIndexPath: indexPath];
cell.textLabel.text = p.firstName;
cell.detailTextLabel.text = p.team.teamName;
}
return cell;
}
答案 0 :(得分:1)
有几个问题,首先你应该只有一个部分,所以你不需要访问部分属性。所以试试这个
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
switch(section){
case 0:
return 7;
case 1:
return [self.fetchedResultsController.fetchedObjects count];
}
return 0;
}
其次,您在使用以下代码时遇到问题:
Player *p =[_fetchedResultsController objectAtIndexPath: indexPath];
导致此问题的原因是您要为这两个部分调用它,并且您的fetch只有一个部分。
要修复崩溃,请使用检查正确indexPath.section的条件包装它,或将其放在第1部分的switch / case语句中。您可以执行以下操作:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
if (indexPath.section==0){
switch (indexPath.row) {
case 0:
cell.textLabel.text = _team.teamName;
break;
case 1:
cell.textLabel.text = _team.headCoach;
break;
default:
break;
}
}else{
Player *p = [self.fetchedResultsController.fetchedObjects objectAtIndex: indexPath.row];
cell.textLabel.text = p.firstName;
cell.detailTextLabel.text = p.team.teamName;
}
return cell;
}
祝你好运
Ť