查询Realm数组的具体结果
问题描述:
我是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 + ", "
})
有些“老板”的也是“买家”,有些则不是。我如何返回“所有者”列表,但排除也是“买家”的所有者?
答
首先,我建议使用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")
+0
谢谢,这是我一直在寻找的答案! – coderdojo
什么使得所有者符合买方的条件?你能分享你的'OwnersModel'吗? – marius