【发布时间】:2012-03-19 14:55:08
【问题描述】:
您能帮我解决以下问题吗
我使用 CoreData 编写了一个应用程序,并且有两个视图控制器。
ControllerA 是一个表格视图,只列出数据 ControllerB 是一个视图控制器,包含几个 UITextFields
要在 ControllerA 上编辑一行,我在 ControllerB 上设置了一个属性,传递了我的 CoreData 实体模型对象 例如。
viewControllerB.item = [self.fetchedResultsController objectAtIndexPath:indexPath];
编辑完成后,ViewControllerB 上的 item 的内容会通过委托传回 ViewControllerA 并保存。
这很好用,我正在努力解决的问题是向 CoreData 添加新项目而不在 ViewControllerB 上设置 managedObjectContext 的最佳方法。
我尝试过传递一个新对象
ItemData *item = [NSEntityDescription insertNewObjectForEntityForName:@"ItemData" inManagedObjectContext:self.managedObjectContext];
viewControllerB.item = item;
如果我在 ViewControllerB 上输入带有数据的表单,则此方法有效,但如果我取消视图并将其弹出,我会在 CoreData 中留下一个(空)对象。
我也尝试过使用标准 init 实例化 CoreData ItemData 对象,但现在明白这行不通,因为 CoreData 不了解上下文,也没有属性的 getter/setter。
这种情况的最佳做法是什么?
1) 我应该将 managedObjectContext 传递给 viewControllerB 吗? 2) 创建一个模型类来保存表单中的值并将其传回,然后处理 CoreData 的东西?
3) 还是有正确的方法来做我想做的事情?
我松散地遵循 iOS Apprentice 2 来处理 Storyboard 等,但在这个模型类中来回传递我知道它工作正常,它的 CoreData 方面就是问题所在。
我希望上述内容很清楚,并且我使用的术语是正确的。
期待任何帮助。
【问题讨论】:
标签: iphone ios ipad core-data nsmanagedobjectcontext