Подтвердить что ты не робот

Как использовать NOT IN с Realm Swift

У меня есть список объектов Realm (скажем, User), и я хочу получить их все, кроме "John", "Marc", "Al 'Med" и т.д.

Я попробовал следующее:

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)

Я также пробовал с NSPredicate(format: "name NOT IN {%@}", namesStr), но он бы сработал (исключение поднялось).

И вторая вещь, как я могу предположить, чтобы избежать имен в NSPredicate. Если одно из имен имеет символ ', это, вероятно, не сработает.


ИЗМЕНИТЬ

Благодаря LE SANG, здесь функциональный результат:

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)
4b9b3361

Ответ 1

В соответствии с документом Realm эти способы должны работать

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