在Results <t>中选择List <t>关系的所有记录?

时间:2015-07-30 13:05:50

标签: ios swift realm

我将表视图绑定到Results<Person>的集合,可以过滤此结果集,但通常不会。问题是当我试图绑定时 - 说; person.children到表格视图,其类型为List<Person>。如果我没有过滤它,我就不会获得Results<Person>类型,因此我需要有两个不同的属性来存储表格的数据集。一个用于Results,一个用于List

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

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

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

编辑:看起来All的此实现对于具有Int类型主键的对象不起作用。无论如何都要检查对象的主键类型吗?

1 个答案:

答案 0 :(得分:2)

使用TRUEPREDICATE似乎有效!

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