我是一个新手到领域和有一些麻烦。因此,我在一个函数中有一个变量,它返回所有“所有者”的用户列表,如下所示:
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 + ", "
})
其中一些“业主”也是“买家”,有些则不是。如何返回“所有者”列表,但排除同时也是“购买者”的所有者?
最佳答案
首先,我建议使用flatMap
和joinWithSeparator
而不是reduce
。
var namesOfUsers: String = list.users
.flatMap({ $0 as? OwnersModel })
.filter({ !$0.isBuyer }) // Rejects buyers
.flatMap({ $0.name })
.joinWithSeparator(", ")
这也避免了在合成字符串的末尾出现额外的逗号,例如
"a, b"
而不是"a, b, "
。除此之外,如果您的集合是统一的,并且是从Realm中检索的惰性集合,例如
List
或Results
的实例,那么您可以使用NSPredicate
来过滤对象,这将直接在数据库上执行,而且速度更快、成本更低。let users: Results<OwnersModel> = …
users.filter("isBuyer == false")
关于swift - 从Realm数组查询特定结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38525600/