从Realm中删除模型但保持对象存活

Dum*_*oko 5 realm ios

我们有这个例子:

我们与一组动物一起工作.让我们假设我们不需要在数据库中持久存在所有动物,并且存在控制从数据库添加和移除动物的逻辑.

例如,我有一个对象,一个马,带有name"Suey"的字符串属性,我将她添加到Realm中addObject:.所以现在我们将这个对象保存到Realm.这个对象是有效的,我们可以这样做horse.name,它将返回"Suey".

接下来会发生什么,我需要从DB中删除Suey.我知道deleteObject:.但遗憾的是,它不仅删除了关于马的持久信息,而且还使我的对象无效.Suey基本上死了,所以如果我想要她回到DB中我需要从头开始创建另一匹马,并且只有在那之后我才能在DB中拥有另一个Suey.

还有另一种方法让Suey活着,所以我在管理她的状态方面有更大的灵活性吗?

我希望我明确指出,如果您有任何问题,请告诉我.

提前致谢!

UPDATE

Horse IS参与一对多的关系,因此它的寿命也会影响相关模型中的属性.

jps*_*sim 1

Realm 中的对象是数据库中等效对象的访问器。如果出于某种原因,您需要将对象变量与其在磁盘上的表示形式“分离”,则可以将其复制到内存中。一种简单的方法是使用持久对象的内容创建一个新的非持久对象:

// Assuming `Horse` inherits from `RLMObject` and `persistedHorse` is attached to an `RLMRealm`.
Horse *persistedHorse = ...;
Horse *inMemoryHorseCopy = [[Horse alloc] initWithObject:persistedHorse];
// This will create a new `Horse` object, not tied to an RLMRealm,
// by copying the contents of `persistedHorse`.
Run Code Online (Sandbox Code Playgroud)

RLMObject每当您需要将现有对象复制到独立对象(如上所述)或另一个领域时,您都可以使用相同的方法。