是否有办法在上下文之外初始化托管对象。我基本上首先尝试在上下文之外分配/初始化一个受管对象,然后弄清楚我是否真的要插入对象,然后使用现有的托管对象上下文将其注入数据存储区。
这是可能的,还是违反Core Data的预期用途?
答案 0 :(得分:5)
托管对象由上下文“管理”,因此您无法使用alloc实现它们,因为它们并非如此。但是,在上下文中调用save方法之前,通过上下文实例化托管对象不会持久化它,所以你可以使用上下文来实现它同样的效果,只有在你弄清楚你真的想要使用这个对象之后才能保存。
答案 1 :(得分:2)
不,你不能在NSManagedObject
之外实例化NSManagedObjectContext
一次(好吧,你可以,但是坏事会发生,你的程序几乎肯定不会像你希望的那样工作)。但是,您可以创建NSInMemoryPersistentStore
支持的NSManagedObjectContext
。设置稍微多一点(不多),当你释放内存存储时,一切都会消失。与此同时,您将获得Core Data对象图管理的所有好处。
答案 2 :(得分:1)
对于任何偶然发现这个问题的人来说,这就是我如何实现OP的目标:
NSManagedObjectContext *moc = AppDelegate.managedObjectContext;
NSEntityDescription *entity = [NSEntityDescription entityForName:@"MyModel"
inManagedObjectContext:moc];
MyModel *model = [[MyModel alloc] initWithEntity:entity
insertIntoManagedObjectContext:nil];
答案 3 :(得分:0)
你可能正在拍摄的是多种情境。您可以创建一个额外的“暂存器”上下文,然后将任何更改合并回主上下文。 Apple的iPhone示例项目之一完成了这一切。你必须登录开发中心才能找到它。