Iphone 带或不带NSFetchedResutlController委托的表视图重新排序的不同行为
我有一个由NSFetchedResutlsController备份的表视图。我想在表视图上支持重新排序。我在NSManagedObject实体中使用一个名为“index”的属性来记录每个对象的顺序,并且每当用户在tableView:MoveRowatingIndexPath:toIndexPath:中执行重新排序操作时,都会重新计算索引,如下所示,Person是NSManagedObject的子类Iphone 带或不带NSFetchedResutlController委托的表视图重新排序的不同行为,iphone,Iphone,我有一个由NSFetchedResutlsController备份的表视图。我想在表视图上支持重新排序。我在NSManagedObject实体中使用一个名为“index”的属性来记录每个对象的顺序,并且每当用户在tableView:MoveRowatingIndexPath:toIndexPath:中执行重新排序操作时,都会重新计算索引,如下所示,Person是NSManagedObject的子类 - (void) tableView:(UITableView *)tableView moveR
- (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。因此,我想知道该框架的实现是否可能是核心数据,或者根据委托的存在而有所不同
对这个问题有什么想法吗?看看这个简单的解决方案,你忘记设置布尔值了: