[英]How to use NOT IN with Realm Swift
I have a list of Realm objects (let's say User) and I want to retrieve all of them but "John", "Marc", "Al' Med" and so on. 我有一个Realm对象列表(让我们说User),我想要检索所有这些对象,但“John”,“Marc”,“Al'Med”等等。
I tried the following: 我尝试了以下方法:
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)
I also tried with NSPredicate(format: "name NOT IN {%@}", namesStr)
but it would crash (exception raised). 我也试过
NSPredicate(format: "name NOT IN {%@}", namesStr)
但它会崩溃(引发异常)。
And second thing , how am I suppose to escape the names in the NSPredicate. 第二件事 ,我怎么想逃避NSPredicate中的名字。 If one of the names has a ' character, it won't probably work.
如果其中一个名称具有'字符,则它可能不起作用。
EDIT 编辑
Thanks to LE SANG, here's the functional result: 感谢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)
According to the Realm document , these ways should work 根据Realm文档 ,这些方法应该有效
let predicate = NSPredicate(format: "NOT (name IN %@)", namesStr)
let predicate = NSPredicate(format: "!(name IN %@)", namesStr)
let predicate = NSPredicate(format: "NOT name IN %@", namesStr)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.