【发布时间】:2014-01-13 01:06:45
【问题描述】:
在我的 iOS 应用程序中,我有一个表格视图,显示来自核心数据实体的实例。选择一行后,应用程序会从实例属性值中打开一个视图详细信息,用户可以根据需要更改它们。从表视图控制器中,我使用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.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]);
}
【问题讨论】:
-
看看这个对类似问题here的回复。它应该是您正在寻找的。span>
-
谢谢你,这是一个很大的帮助。但@bilobatum 的答案正是我想要的。
-
一个简单的建议。对变量使用驼峰命名法。因此,
ToDoTextField将变为toDoTextField。
标签: ios core-data nsmanagedobject