В моем приложении iOS у меня есть табличный вид, показывающий экземпляры из объекта Core Data. После выбора строки приложение открывает деталь представления из значений атрибутов экземпляра, и пользователь может изменить их, если это необходимо. От контроллера табличного я прохожу NSManagedObject
используя didSelectRowAtIndexPath
метод:Сохранение обновленного экземпляра Core Data
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
EditToDoViewController *detailViewController = [[EditToDoViewController alloc] initWithNibName:@"EditToDoViewController" bundle:nil];
NSManagedObject *selectedObject = [[self fetchedResultsController] objectAtIndexPath:indexPath];
detailViewController.selectedObject = selectedObject;
//[self.navigationController pushViewController:detailViewController animated:YES];
[self presentViewController:detailViewController animated:YES completion:nil];
}
Затем на EditToDoViewController
, я покажу значения экземпляра с помощью текстовых полей, как показано ниже:
ToDoTextField.text = [[selectedObject valueForKey:@"thingName"]description];
Но дон Теперь не знаю, как реализовать метод сохранения для хранения обновленного файла ToDoTextField.text
В файле реализации AddToDoViewController
я использую следующий код внутри метода действия кнопки сохранения, но я не хочу вставлять новый объект, я хочу его обновить ,
AppDelegate* appDelegate = [AppDelegate sharedAppDelegate];
NSManagedObjectContext* context = appDelegate.managedObjectContext;
NSManagedObject *favoriteThing = [NSEntityDescription insertNewObjectForEntityForName:@"FavoriteThing" inManagedObjectContext:context];
NSString *todoText = ToDoTextField.text;
[favoriteThing setValue:todoText forKey:@"thingName"];
NSError *error;
if(![context save:&error])
{
NSLog(@"Whoopw,couldn't save:%@", [error localizedDescription]);
}
Простой совет. Используйте переменные camelCase для переменных. Таким образом, 'ToDoTextField' станет' toDoTextField'. –
Посмотрите на этот ответ на аналогичный вопрос [здесь] (http://stackoverflow.com/questions/10571786/how-to-update-existing-object-in-core-data/10572134#10572134). Это должно быть то, что вы ищете. – adeiji
Спасибо, это была большая помощь. но ответ от @bilobatum был именно тем, что я искал. – mvasco