如何在 Realm Swift 中使用 NOT IN
Posted
技术标签:
【中文标题】如何在 Realm Swift 中使用 NOT IN【英文标题】:How to use NOT IN with Realm Swift 【发布时间】:2016-01-21 02:57:54 【问题描述】:我有一个 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)
【问题讨论】:
什么是 [uiRealm.objects(Image)]? @NguyenHoan 打错了,应该是uiRealm.objects(User)
可能重复:“如何在 Swift 中不使用领域”/jk
【参考方案1】:
根据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)
【讨论】:
完美!当它说name IN ‘Lisa’, ‘Spike’, ‘Hachi’
时,我误解了该文件。而且我什至不需要再将数组连接成字符串了!
也可以使用数组以上是关于如何在 Realm Swift 中使用 NOT IN的主要内容,如果未能解决你的问题,请参考以下文章
Realm (Swift):如何在迁移期间获取 MutableSet 数据?
什么时候/如何排序Realm孩子 Swift中UITableView的属性