查询Realm数组的特定结果

时间:2016-07-22 11:43:19

标签: swift realm

我是Realm的新手,遇到了一些麻烦。所以我在一个函数中有一个变量,它返回一个所有“所有者”的用户列表,如下所示:

    var namesOfUsers: String = list.users
        .flatMap({ $0 as? OwnersModel })
        .reduce("", combine: { (namesOfUsers, owner) -> String in
            guard let fullName = owner.name else {
                return namesOfUsers
            }

            return namesOfUsers + name + ", "
    })

其中一些“所有者”也是“买家”,有些则不是。如何退回“所有者”列表,但不包括也是“买家”的所有者?

1 个答案:

答案 0 :(得分:2)

首先,我建议使用flatMapjoinWithSeparator代替reduce

var namesOfUsers: String = list.users
        .flatMap({ $0 as? OwnersModel })
        .filter({ !$0.isBuyer }) // Rejects buyers
        .flatMap({ $0.name })
        .joinWithSeparator(", ")

这也可以避免在撰写的字符串末尾添加额外的逗号,例如: "a, b"代替"a, b, "

除此之外,如果你的集合是统一的,并且从Realm中检索一个惰性集合,例如ListResults的实例,然后您可以使用NSPredicate来过滤您的对象,这些对象将直接在数据库上执行,速度更快,成本更低。

let users: Results<OwnersModel> = …
users.filter("isBuyer == false")