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

有些“老板”的也是“买家”,有些则不是。我如何返回“所有者”列表,但排除也是“买家”的所有者?

+1

什么使得所有者符合买方的条件?你能分享你的'OwnersModel'吗? – marius

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

谢谢,这是我一直在寻找的答案! – coderdojo