【问题标题】:Select all records of a List<T> relationship into Results<T>?将 List<T> 关系的所有记录选择到 Results<T> 中?
【发布时间】:2015-07-30 13:05:50
【问题描述】:

我将一个表视图绑定到Results&lt;Person&gt; 的集合,这个结果集可以被过滤,但通常它不是。问题是当我尝试绑定时 - 说; person.childrenList&lt;Person&gt; 类型的表视图。如果我不过滤它,我不会得到Results&lt;Person&gt; 类型,所以我需要有两个不同的属性来存储表的数据集。一张给Results,一张给List

我的问题是...有没有办法将所有记录从List 返回为Results?类似于.all() 的东西?我尝试使用空的 NSPredicate,但这是不允许的,必须指定属性名称。我希望我的函数足够通用,可以在任何列表上调用它以获得所有结果。我不想指定说... .filter("firstName != ''") 只是为了获得所有结果。

我目前已经实现了类似的东西......但我很好奇是否有更好的方法。

extension List {
    func all() -> Results<T> {
        let primaryKey = T.primaryKey() ?? "id"
        return self.filter("\(primaryKey) != ''")
    }
}

编辑: 看起来 All 的这种实现不适用于具有 Int 类型主键的对象。有没有办法检查对象的主键类型?

【问题讨论】:

    标签: ios swift realm


    【解决方案1】:

    使用TRUEPREDICATE 似乎有效!

    extension List {
        /// Returns an Results object for all Objects in the List.
        func all() -> Results<T> {
            return self.filter("TRUEPREDICATE")
        }
    }
    

    【讨论】:

    • 这可能是您短期内最好的选择,尽管我们正在开发一个RealmCollectionType 协议,这将使事情变得更容易
    • 我们现在有一个 PR 待审核,其中介绍了 RealmCollectionType
    • 不错!我们期待着检查一下。
    猜你喜欢
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-07
    相关资源
    最近更新 更多