2015-09-07 78 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的速度很快,所以你不應該真的需要像這樣的內存緩衝區版本。

如果你絕對確實需要在內存中的境界,記住,他們將兩個分離的境界實體;你不能鏈接它們,你不能在它們之間共享對象(你需要爲每個領域手動創建它們),所以你應該評估你是否真的需要它。祝你好運!