【问题标题】:Swift - Error in when trying to convert a list of Realm objects (already saved to a realm) into resultsSwift - 尝试将领域对象列表(已保存到领域)转换为结果时出错
【发布时间】:2019-04-11 08:35:12
【问题描述】:

我在尝试使用 RealmSwiftList<T> 转换为 Results<T> 时遇到问题。我有一个函数通过多个过滤器运行一组结果并返回过滤后的结果。但是,此过程中的一个步骤需要进行一些计算,并且无法通过应用NSPredicate 过滤器来完成。因此,我创建一个列表并将结果添加到满足条件的列表中。由于我需要返回一组结果,因此我将“TRUEPREDICATE”过滤器应用于列表。但是,我最终遇到了错误消息,“此方法只能在从RLMRealm 检索到的RLMArray 实例上调用。”

我已经看到这个问题出现在尚未添加到Realm 的对象列表中,但这些是先前查询的结果,因此肯定已经保存到数据库中。

我的代码如下所示:

    var results:Results<Object> = resultsOfSomeQuery

    let list = List<Object>()

    for result in results {

        if result.matchesSomeCriteria {

            list.append(result)

        }

    }

    results = list.filter("TRUEPREDICATE")

如果有人能澄清这里发生了什么,将不胜感激。

【问题讨论】:

标签: ios swift realm predicate rlmarray


【解决方案1】:

你想要达到的目标是不可能的。

由于Results 是自动更新的,它只能包含来自Realm 的托管对象。这就是为什么 Realm 的 filter 也只能在托管集合上调用。你不能在你手动创建的 List 上使用 Realm 的 filter 而不将其持久化到 Realm 中。

如果您需要进行的过滤确实无法使用NSPredicates 完成,那么您需要使用非更新集合。

【讨论】:

  • 感谢您澄清这一点。我将尝试找出其他方法来实现我正在寻找的结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多