2016-04-14 18 views
1

可以說我有一個standaloneObject獨立對象,它是通過使用方法initWithValue從原始對象(稱爲originalObject)創建的。如果我從領域刪除originalObject,它是否使standAloneObject失效?如果沒有,我可以通過使用createOrUpdateInRealm重新添加對象:withValues:?當實際對象從領域中刪除時,獨立對象如何受到影響?

如果它的任何重要性,這一切都在主線上完成。

編輯:

MyRLMObject *standAloneObject = [[MyRLMObject alloc] initWithValue:persistedObject]; 
RLMRealm *defaultRealm = [RLMRealm defaultRealm]; 
[defaultRealm beginWriteTransaction]; 
[defaultRealm deleteObject: persistedObject]; 
[defaultRealm commitWriteTransaction]; 

[defaultRealm beginWriteTransaction]; 
[defaultRealm addOrUpdateObject:standAloneObject]; 
[defaultRealm commitWriteTransaction]; 

這是什麼,我試圖做一個非常簡化的版本,但它有效地抓住了什麼,我試圖做的精髓。

+0

您的代碼中存在一些編譯錯誤,因此我進行了修復。如果上面的代碼是正確的,我不能再現任何錯誤。如果您仍然有錯誤,請將您的可複製項目發送至[email protected]進行調查。 –

回答

0

如果我從領域刪除originalObject,它是否使standAloneObject失效?

不是。由initWithValue:創建的獨立對象與Realm隔離。這只是一個對象。 (因此,獨立對象跨線程傳遞。)

如果不是,我可以使用createOrUpdateInRealm重新添加對象:withValues:?

是的。您可以重新添加獨立對象createOrUpdateInRealm:withValues:

+0

這就是我所想的,但是當我嘗試這個時,我正在從領域引發異常。例外情況是「RLMException - 不允許向領域添加已刪除或失效的對象」 我可以在我的最後找出導致此問題的原因的一些事情?我還注意到在調試器中,當我刪除originalObject時,我無法再打印描述standAloneObject。 –

+0

@JasperChan你能通過更新你的問題來分享你的代碼嗎? –

+0

按要求完成。謝謝你的幫助! :) –

相關問題