gpt4 book ai didi

ios - 从 Realm 中删除模型,但让对象保持事件状态

转载 作者:可可西里 更新时间:2023-11-01 04:45:55 25 4
gpt4 key购买 nike

让我们举个例子:

我们与一组动物一起工作。假设我们不需要将所有动物都保存在数据库中,并且有一个逻辑可以控制在数据库中添加和删除动物。

例如,我有一个对象,一匹马,其字符串属性 name 为“Suey”,我使用 addObject: 将她添加到 Realm。所以现在我们将这个对象保存到 Realm 中。此对象有效,我们可以执行 horse.name,这将返回“Suey”。

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

有没有其他方法可以让 Suey 活着,这样我就可以更灵活地管理她的状态?

我希望我说清楚了,如果您有任何问题,请告诉我。

提前致谢!

更新

Horse 是一对多关系,所以它的生命周期也会影响相关模型中的属性。

最佳答案

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`.

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

关于ios - 从 Realm 中删除模型,但让对象保持事件状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29409100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com