我直接在数据库上使用NSPredicate
过滤我的数据库查询,但随后我想进一步使用自定义谓词过滤返回的值(Results<T>
): / p>
elements.filter { (element) -> Bool in
return ...
}
这个返回LazyFilterBidirectionalCollection
- 如何使用它并再次获得结果?
答案 0 :(得分:2)
我们正在跟踪在GitHub issue #2138中添加对基于块的谓词的支持。这将允许您在Realm的内置基元支持之外执行自定义过滤。
如果您有时需要使用Results<T>
而其他时间使用LazyFilterBidirectionalCollection
,则可以将值包装在类型擦除的包装中,例如AnyBidirectionalCollection<T>
,它会转发任何操作包含类型,同时隐藏底层集合。
例如:
func maybeFilter(results: Results<Foo>) -> AnyBidirectionalCollection<Foo> {
if (condition) {
return AnyBidirectionalCollection(results.filter { $0.foo != "bar" })
}
return AnyBidirectionalCollection(results)
}