Я пытаюсь изменить порядок UITableView в приложении для iOS.
После сбора большого количества вопросов StackOverFlow, я использовал это:
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
self.userDrivenDataModelChange = YES;
NSUInteger fromIndex = fromIndexPath.row;
NSUInteger toIndex = toIndexPath.row;
NSManagedObject *affectedObject = [self.fetchedResultsController.fetchedObjects objectAtIndex:fromIndex];
[affectedObject setValue: [NSNumber numberWithInt:toIndex] forKey:@"priority"];
NSUInteger start, end;
int delta;
if (fromIndex < toIndex) {
// move was down, need to shift up
delta = -1;
start = fromIndex + 1;
end = toIndex;
} else { // fromIndex > toIndex
// move was up, need to shift down
delta = 1;
start = toIndex;
end = fromIndex - 1;
}
for (NSUInteger i = start; i <= end; i++) {
NSManagedObject *otherObject = [self.fetchedResultsController.fetchedObjects objectAtIndex:i];
NSNumber *oldPriority = (NSNumber *)[otherObject valueForKey:@"priority"];
int tmp = [oldPriority intValue] + delta;
NSNumber *newPriority = [NSNumber numberWithInt:tmp];
[otherObject setValue: [NSNumber numberWithInt:[newPriority intValue]] forKey:@"priority"];
}
NSError *error = nil;
if (! [self.fetchedResultsController.managedObjectContext save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
// Should I call something here?
self.userDrivenDataModelChange = NO;
}
После отправки сообщения сохранения в объект контекста, Что я долженвызов?какой-нибудь метод на контроллере выборки или табличном представлении?потому что он не работает в текущей форме.
Должен ли я отправлять сохранение в объект контекста в первую очередь?