0

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

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

我的代码看起来像这样:

    var results:Results<Object> = resultsOfSomeQuery

    let list = List<Object>()

    for result in results {

        if result.matchesSomeCriteria {

            list.append(result)

        }

    }

    results = list.filter("TRUEPREDICATE")

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

4

1 回答 1

1

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

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

如果你需要做的过滤真的不能使用NSPredicates 来完成,那么你需要求助于使用非更新集合。

于 2019-04-11T08:45:53.693 回答