iPhone核心数据:在没有上下文的情况下初始化托管对象

时间:2009-09-28 16:40:12

标签: iphone core-data

是否有办法在上下文之外初始化托管对象。我基本上首先尝试在上下文之外分配/初始化一个受管对象,然后弄清楚我是否真的要插入对象,然后使用现有的托管对象上下文将其注入数据存储区。

这是可能的,还是违反Core Data的预期用途?

4 个答案:

答案 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示例项目之一完成了这一切。你必须登录开发中心才能找到它。