如何在 Realm Swift 中使用 NOT IN
How to use NOT IN with Realm Swift
我有一个 Realm 对象列表(假设是用户),我想检索所有对象,但 "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)
根据 Realm document,这些方法应该有效
let predicate = NSPredicate(format: "NOT (name IN %@)", namesStr)
let predicate = NSPredicate(format: "!(name IN %@)", namesStr)
let predicate = NSPredicate(format: "NOT name IN %@", namesStr)
我有一个 Realm 对象列表(假设是用户),我想检索所有对象,但 "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)
根据 Realm document,这些方法应该有效
let predicate = NSPredicate(format: "NOT (name IN %@)", namesStr)
let predicate = NSPredicate(format: "!(name IN %@)", namesStr)
let predicate = NSPredicate(format: "NOT name IN %@", namesStr)