如何编写 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")
    }
}