保存更新的Core Data实例

在我的iOS应用程序,我有一个表视图显示来自核心数据实体的实例。 select一行后,应用程序会从实例属性值中打开一个视图详细信息,如果需要,用户可以更改它们。 从表视图控制器我使用didSelectRowAtIndexPath方法传递一个NSManagedObject

 - (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.textAddToDoViewController实现文件中,我正在使用保存button操作方法内的下面的代码,但我想要插入一个新的对象,我想要更新它。

 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]); } 

AddToDoViewController不一定需要更新托pipe对象。 由于EditToDoViewController传递了托pipe对象,因此可以在用户完成编辑时更新托pipe对象。

 // EditToDoViewController implementation - (IBAction)SaveButtonAction:(id)sender { AppDelegate* appDelegate = [AppDelegate sharedAppDelegate]; NSManagedObjectContext* context = appDelegate.managedObjectContext; [selectedObject setValue:ToDoTextField.text forKey:@"thingName"]; NSError *error; if(! [context save:&error]) { NSLog(@"Whoopw,couldn't save:%@", [error localizedDescription]); } }