2016-07-22 6 views
0

Ich bin ein Neuling in Realm und einige Probleme. So habe ich eine Variable in einer Funktion, die eine Liste der Benutzer zurückgibt, die alle „Besitzer“ sind etwa so:Abfrage bestimmter Ergebnisse von Realm-Array

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

Einige dieser „Besitzer“ sind auch „Käufer“ und manche nicht. Wie kann ich eine Liste von "Eigentümern" zurückgeben, aber Eigentümer, die auch "Käufer" sind, ausschließen?

+1

Was qualifiziert einen Eigentümer als Käufer? Können Sie Ihr 'OwnersModel' teilen? – marius

Antwort

2

Zunächst würde ich empfehlen, flatMap und joinWithSeparator anstelle von reduce zu verwenden.

Dies vermeidet auch, dass Sie ein zusätzliches Komma am Ende Ihrer zusammengesetzten Zeichenfolge, z. "a, b" statt "a, b, ".

Abgesehen davon, wenn Ihre Sammlung einheitlich ist und eine faule Sammlung aus Realm wie z. eine Instanz von List oder Results, dann können Sie stattdessen eine NSPredicate verwenden, um Ihre Objekte zu filtern, die direkt auf der Datenbank ausgeführt werden würde und schneller und weniger teuer ist.

let users: Results<OwnersModel> = … 
users.filter("isBuyer == false") 
+0

Danke, das ist die Antwort, nach der ich gesucht habe! – coderdojo