2015-09-07 64 views
1

我从CoreData迁移到境界......基本上,我需要有两个单独的数据库,可以在分析过程中说,一个只在内存中,第二个与光盘的持久性现在亲子王国

,我需要建立一个境界,可以在给定的线程工作,但与我的选择的顶部境界,不仅默认的Realm(像一个线程CoreData孩子上下文)链接

目前,我这样做像

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 

    RLMRealm * realm = [RLMRealm defaultRealm]; 
    [realm beginWriteTransaction]; 
    // ... 
    [realm commitWriteTransaction]; 

    dispatch_async(dispatch_get_main_queue(), ^{ 

     // the objects from above are now saved in the default real 

    }); 

}); 

但我需要有2个主要领域(一个在mem ORY并存储在一个盘),比做SMTH像

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 

    RLMRealm * realm = [RLMRealm childRealmWithParentRealm:myRealm1]; 
    [realm beginWriteTransaction]; 
    // ... 
    [realm commitWriteTransaction]; 

    dispatch_async(dispatch_get_main_queue(), ^{ 

     // the objects from above are now saved in the myRealm1 

    }); 

}); 
+0

Realm没有“sub-realming”的概念。这意味着什么呢?领域是一组对象。你会看到你的孩子的境界是什么?通过Realm的设计,儿童领域可以是对象的一个​​子集。但它不是你描述...... – Michal

+0

我需要有两个领域,一个是InMemory(Realm1),一个用于持久性(Realm2)和线程我需要解析的Realm1或Realm2 ...在CD这可以通过创建一个子上下文来实现,该子上下文将上下文中的所有对象都存入并且保存回上下文 –

+0

如果仅用于性能,并且内存中的Realm中的所有对象都必须在持久化Realm中结束无论如何,为什么不直接将它们添加到后台线程中的持久性领域? – ast

回答

1

这听起来像是你可能会试图过度工程的时候,你并不真的需要一个解决方案。

境界不订阅同一模型作为核心数据,你需要上下文链,以确保一切都在线程更新。一旦提交写事务,在运行循环的下一次迭代中,对所有线程的更改都可用。

我的建议是,除去在内存领域(甚至只是暂时的),与磁盘上的领域做的一切,看看有没有足够的工作为您的需求。 Realm的速度很快,所以你不应该真的需要像这样的内存缓冲区版本。

如果你绝对确实需要在内存中的境界,记住,他们将两个分离的境界实体;你不能链接它们,你不能在它们之间共享对象(你需要为每个领域手动创建它们),所以你应该评估你是否真的需要它。祝你好运!