Swift - 尝试将领域对象列表(已保存到领域)转换为结果时出错

Swift - Error in when trying to convert a list of Realm objects (already saved to a realm) into results

我在尝试使用 RealmSwiftList<T> 转换为 Results<T> 时遇到问题。我有一个函数可以通过多个过滤器运行一组结果,并 returns 过滤结果。但是,此过程中的一个步骤需要进行一些计算,并且无法通过应用 NSPredicate 过滤器来完成。因此,我创建了一个列表,并将符合条件的结果添加到列表中。由于我需要 return 一组结果,因此我将 "TRUEPREDICATE" 过滤器应用于列表。但是,我最终因错误消息 "This method may only be called on RLMArray instances retrieved from an RLMRealm."

而崩溃

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

我的代码看起来像这样:

    var results:Results<Object> = resultsOfSomeQuery

    let list = List<Object>()

    for result in results {

        if result.matchesSomeCriteria {

            list.append(result)

        }

    }

    results = list.filter("TRUEPREDICATE")

如果有人能澄清这里发生的事情,我们将不胜感激。

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

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

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