2016-07-22 49 views
0

我是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

回答

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") 
+0

謝謝,這是我一直在尋找的答案! – coderdojo