我的 iPhone 应用程序发生了一些奇怪的事情。我正在使用 Core Data 将数据存储在 SQLite 数据库中。我的应用程序启动后第一次尝试读取一个表以返回所有行以填充 UITableView,其中包含供用户选择的内容列表。如果他们选择了列表中的顶部项目,我会得到一个 EXC_BAD_ACCESS 异常。如果他们选择任何其他项目,一切似乎都很好。这是代码示例: Sport 和 Team 是 NSManagedObjects。sports 是使用 NSFetchedResultsController (fetchedObjects) 获取的 Sport 对象的 NSArray。我可以在 UITableView 中很好地显示对象列表(我对 cellForRowAtIndexPath() 调用使用相同的数组,没有任何问题
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
Sport *sport = (Sport *)[sports objectAtIndex:indexPath.row];
if (teamSetup) {
if (team.sport != sport) {
[team setSport:sport]; <-- this is where the EXC_BAD_ACCESS happens
NSError *error;
[team.managedObjectContext save:&error];
}
[self.navigationController popViewControllerAnimated:YES];
} else {
// .. do some other stuff
}
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
更新:它似乎只影响 NSArray 中的最后一条记录而不是第一条记录,直到它抛出 EXC_BAD_ACCESS 错误。在我再次重新启动应用程序后,问题消失了,代码按预期工作:(