我是一个新手到领域和有一些麻烦。因此,我在一个函数中有一个变量,它返回所有“所有者”的用户列表,如下所示:

    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 + ", "
    })

其中一些“业主”也是“买家”,有些则不是。如何返回“所有者”列表,但排除同时也是“购买者”的所有者?

最佳答案

首先,我建议使用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")

关于swift - 从Realm数组查询特定结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38525600/

10-12 14:36