2016-01-21 10 views
11

Ich habe eine Liste von Realm-Objekten (sagen wir Benutzer) und ich möchte alle von ihnen aber "John", "Marc", "Al 'Med" und so weiter.NOT IN mit Realm Swift

Ich habe versucht, die folgenden:

var namesStr = "" 
for user in unwantedUsers { 
    namesStr += "'" + user.name + "', " 
} 
namesStr = String(namesStr.characters.dropLast().dropLast()) 
let predicate = NSPredicate(format: "NOT name IN {%@}", namesStr) 
let remainingUsers = uiRealm.objects(User).filter(predicate) 

ich auch mit NSPredicate(format: "name NOT IN {%@}", namesStr) versucht, aber es würde abstürzen (Ausnahme ausgelöst).

Und zweite Sache, wie soll ich die Namen in der NSPredate zu entkommen. Wenn einer der Namen ein ' Zeichen hat, wird es wahrscheinlich nicht funktionieren.


EDIT

Dank LE SANG, hier ist das funktionelle Ergebnis:

var userArr: [String] = [] 
for user in unwantedUser { 
    userArr.append(user.name) 
} 
let predicate = NSPredicate(format: "NOT name IN %@", userArr) 
let remainingUsers = uiRealm.objects(User).filter(predicate) 
+0

arbeiten, was ' s [uiRealm. Objekte (Bild)]? –

+0

@NguyenHoan Es ist ein Tippfehler, sollte 'uiRealm.Objects (User) ' – Kalzem

+0

Mögliche Duplikate von:" Wie man Realm innerhalb von Swift NICHT verwenden "/ jk –

Antwort

20

Nach dem Realm document sollten diese Möglichkeiten

let predicate = NSPredicate(format: "NOT (name IN %@)", namesStr) 
let predicate = NSPredicate(format: "!(name IN %@)", namesStr) 
let predicate = NSPredicate(format: "NOT name IN %@", namesStr) 
+0

Perfekt! Ich habe das Dokument missverstanden, als es hieß: Name Lisa, Spike, Hachi. Und ich muss das Array nicht einmal mehr zu einem String zusammenfassen! – Kalzem

+0

Sie können auch ein Array verwenden – onmyway133

Verwandte Themen