如何使用NOT IN与Realm Swift
问题描述:
我有一个Realm对象列表(比方说用户),我想检索所有的对象,但是“John”,“Marc”,“Al'Med”等等。如何使用NOT IN与Realm Swift
我试过如下:
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中的名字。如果其中一个名称具有'字符,则它不会起作用。
编辑
由于桑乐,这里的功能结果:
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)
+0
完美!当我在'Lisa','Spike','Hachi'}'中说'名字时,我误解了文档。而且我甚至不需要将数组串接成一个字符串了! – Kalzem
+0
您也可以使用数组 – onmyway133
什么s [uiRealm。对象(图片)]? –
@NguyenHoan这是一个错字,应该是'uiRealm.objects(User)' – Kalzem
可能的重复:“如何在Swift中不使用Realm”/ jk –