Iphone 带或不带NSFetchedResutlController委托的表视图重新排序的不同行为

Iphone 带或不带NSFetchedResutlController委托的表视图重新排序的不同行为,iphone,Iphone,我有一个由NSFetchedResutlsController备份的表视图。我想在表视图上支持重新排序。我在NSManagedObject实体中使用一个名为“index”的属性来记录每个对象的顺序,并且每当用户在tableView:MoveRowatingIndexPath:toIndexPath:中执行重新排序操作时,都会重新计算索引,如下所示,Person是NSManagedObject的子类 - (void) tableView:(UITableView *)tableView moveR

我有一个由NSFetchedResutlsController备份的表视图。我想在表视图上支持重新排序。我在NSManagedObject实体中使用一个名为“index”的属性来记录每个对象的顺序,并且每当用户在tableView:MoveRowatingIndexPath:toIndexPath:中执行重新排序操作时,都会重新计算索引,如下所示,Person是NSManagedObject的子类

- (void) tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
{
  NSMutableArray *userList = [self.personResult.fetchedObjects mutableCopy];
  Person *user = [[userList objectAtIndex:fromIndexPath.row] retain];
  [userList removeObjectAtIndex:fromIndexPath.row];
  [userList insertObject:user atIndex:toIndexPath.row];
  [user release];

  int indexCounter = 0;
  for (Person *user in userList)
  {
    user.index = [NSNumber numberWithInt:indexCounter++];
  }
}
让我感到困惑的是,如果我没有为NSFetchedResutlsController设置委托,那么NSFetchedResutlsController中对象的顺序将不会更新。因此,当我单击单元格查看详细信息时,它将按照之前的顺序显示内容。但是,当我为NSFetchedResutlsController设置一个实现为空的委托时(如下图所示),NSFetchedResutlsController中对象的顺序会得到更新

- (void) controllerWillChangeContent:(NSFetchedResultsController *)controller
{
}

- (void) controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath
{
}

- (void) controllerDidChangeContent:(NSFetchedResultsController *)controller
{
}
我检查了delegate属性的初始值,它被设置为nil。因此,我想知道该框架的实现是否可能是核心数据,或者根据委托的存在而有所不同


对这个问题有什么想法吗?

看看这个简单的解决方案,你忘记设置布尔值了: