2016-04-14 42 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

按要求完成。谢谢你的帮助! :) –