如何使用NOT IN与Realm Swift

如何使用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) 
+0

什么s [uiRealm。对象(图片)]? –

+0

@NguyenHoan这是一个错字,应该是'uiRealm.objects(User)' – Kalzem

+0

可能的重复:“如何在Swift中不使用Realm”/ jk –

按照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