我有一些从UIViewController的子类继承的视图控制器,我们将其称为 SpecialViewController 。 SpecialViewController的要点是存储每个其他视图控制器可以继承的所有冗余属性等。应用程序的生命周期从第一个视图控制器到最后一个视图控制器,收集一些信息,以便最后一个视图控制器有一个完整的数据条目保存到Core Data。目前我的AppDelegate是我的模型,上下文和持久性存储协调器,我有一个名为 Person 的NSManagedObject的子类。我的问题是,将数据构建到最后一个视图控制器,然后保存它的最佳方法是什么?
如果是这样,将我的 SpecialViewController 的指定初始化程序设置为以下方法是不好的设计:
-(id)initWithManagedObjectInstance:(Person *)personManagedObject
然后最后我可以获取完整的“Person”数据集(在最后一个视图控制器中)并将其提交到数据库......?
随意争辩我的想法,我想以最好的方式建立它。
答案 0 :(得分:2)
不,我认为这不会起作用。你通常这样做的方式,或者至少我这样做的方式是将你的ManagedObjectContext从你的AppDelegate传递到你的第一个SpecialViewController,然后从那里传递给每个连续的SpecialViewController。确保SpecialViewController有一个定义为@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
的属性,然后将其设置为您所在的任何类的ManagedObjectContext:specialViewController.managedObjectContext = self.managedObjectContext;
为您创建的每个新的SpecialViewController。然后你可以在最后保存它:
NSError *error;
if (![self.managedObjectContext save:&error]) {
NSLog(@"Error saving: %@", error);
// Error handling
}
编辑:哦等等,我明白你在说什么,抱歉。是的,我想你可以。大声笑。虽然没试过。我可能会通过创建一个与核心数据无关的Person
,将其从视图传递到视图,然后当我需要保存它,创建一个与核心数据相关联的insertNewObjectForEntityForName:inManagedObjectContext:
并复制所有从另一个到新的信息。