我们有这个例子:
我们与一组动物一起工作 . 让我们假设我们不需要在数据库中持久存在所有动物,并且存在控制从数据库添加和移除动物的逻辑 .
例如,我有一个对象,一个马,字符串属性 name
与"Suey",我将她添加到Realm, addObject:
. 所以现在我们将这个对象保存到Realm . 这个对象是有效的,我们可以做 horse.name
,它将返回"Suey" .
接下来会发生什么,我需要从DB中删除Suey . 我做 deleteObject:
. 但遗憾的是,它不仅删除了关于马的持久信息,而且还使我的对象无效 . Suey基本上死了,所以如果我想要她回到DB中我需要从头开始创建另一匹马,并且只有在那之后我才能在DB中拥有另一个Suey .
还有另一种方法让Suey活着,所以我在管理她的状态方面有更大的灵活性吗?
我希望我明确指出,如果您有任何问题,请告诉我 .
提前致谢!
UPDATE
Horse IS参与一对多的关系,因此它的寿命也会影响相关模型中的属性 .
2 回答
Realm中的对象是数据库中等效对象的访问器 . 如果由于某种原因,您需要从磁盘表示中对象变量"detach",您可以将其复制到内存中 . 一种简单的方法是使用持久化对象的内容创建一个新的,未持久化的对象:
无论何时需要将现有的
RLMObject
复制到独立对象(如上所述)或另一个域中,都可以使用相同的方法 .根据documentation对查询结果对象的每次修改(在您的情况下,Object Horse with Name Suey)直接修改磁盘上的数据,因为结果是实际数据而不是它的副本 . 因此,如果你移除马,你必须创建一个新的 .