我尝试使用带有谓词的RealmSwift framefowk
从Realm执行查询对象:
realm.objects(Train).filter("ANY route IN %@", realm.objects(Route))
错误是:
无法使用类型'的参数列表调用'filter'(String, 结果)'
相同的代码适用于Realm framework
,但不适用于RealmSwift framework
。
我做错了什么?
答案 0 :(得分:1)
问题是Results.filter(_:...)
接受(String, CVarArgType...)
类型的参数,但Results
不符合CVarArgType
。我刚刚创建了GitHub问题#1995来跟踪此问题。修复非常简单,我希望很快就能解决这个问题。
在此期间,您可以使用Results
将List
和Results.filter(_:...)
参数转换为Array
至map(_:_:)
,如下所示:
realm.objects(Train).filter("ANY route IN %@", map(realm.objects(Route)) { $0 })
编辑: PR #1996使Results
符合CVarArgType
现在正在等待审核。
答案 1 :(得分:0)
在您的情况下,结果并不像数组一样考虑,您只需使用这段代码即可。您是否尝试映射realm.objects(Route)
以返回一个标识符数组并使用以下内容对其进行过滤:ANY route.yourIdentifier IN %@
?
答案 2 :(得分:0)
我写了这个扩展名
extension Results {
func map<U>(transform: (T) -> U) -> Results<U> {
return Results<U>(Swift.map(self, transform))
}
}
但错误是
'Results<U>' cannot be constructed because it has no accessible initializers
可能是因为无法直接针对Realm文档创建结果。