如何编写 Realm Results 对象扩展
How to write a Realm Results object extension
我想编写一个扩展来简化对我的 Results
对象的复杂过滤。我试过这个:
extension Results where T:MyProtocol {
func filterEnabled() -> MyProtocol {
return self.filter("type == 1").filter { [=10=].enabled == true }
}
}
XCode 给我这个错误:Ambiguous reference to member 'filter'
。我认为 T:MyProtocol
限制是不够的。
我怎样才能完成我想做的事情?
我认为这里的问题不是通用约束,而是 filter
方法,你在这里使用 return 一个集合,它与 return 不匹配您指定的类型。
同样重要的是要注意:您应用的第一个过滤器可以由 Realm 在内部优化以查询您的数据库,后者是 Swift 标准库的一部分,并在过滤之前先将所有对象拉入内存.
extension Results where T: Named {
func firstEnabled() -> Named? {
return self.filter("type == 1 && enabled == true").first
}
func filterEnabled() -> Results<T> {
return self.filter("type == 1 && enabled == true")
}
}
我想编写一个扩展来简化对我的 Results
对象的复杂过滤。我试过这个:
extension Results where T:MyProtocol {
func filterEnabled() -> MyProtocol {
return self.filter("type == 1").filter { [=10=].enabled == true }
}
}
XCode 给我这个错误:Ambiguous reference to member 'filter'
。我认为 T:MyProtocol
限制是不够的。
我怎样才能完成我想做的事情?
我认为这里的问题不是通用约束,而是 filter
方法,你在这里使用 return 一个集合,它与 return 不匹配您指定的类型。
同样重要的是要注意:您应用的第一个过滤器可以由 Realm 在内部优化以查询您的数据库,后者是 Swift 标准库的一部分,并在过滤之前先将所有对象拉入内存.
extension Results where T: Named {
func firstEnabled() -> Named? {
return self.filter("type == 1 && enabled == true").first
}
func filterEnabled() -> Results<T> {
return self.filter("type == 1 && enabled == true")
}
}