保存更新的核心数据实例[复制](Saving an updated Core Data instan

2019-09-29 15:31发布

这个问题已经在这里有一个答案:

  • 如何在核心数据更新现有的对象? 5个回答

在我的iOS应用我有一个显示从核心数据实体实例的表视图。 选择行后,应用程序打开从实例的视图细节属性值,并且如果需要的话,用户可以改变它们。 从表视图控制器我通过NSManagedObject使用didSelectRowAtIndexPath方法:

- (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我使用下面的保存按钮操作方法里面的代码执行文件,但我dom't要插入一个新的对象,我要更新它。

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

Answer 1:

AddToDoViewController不一定必须更新管理对象。 由于EditToDoViewController传递的管理对象,它可以在用户完成编辑更新管理对象。

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


文章来源: Saving an updated Core Data instance [duplicate]