【发布时间】:2019-10-04 13:18:17
【问题描述】:
是否可以在带有 SUBQUERY 的 NSPredicate 中使用“NOT IN”?
在“正常”的 NSPredicate 中,这是有效的:
NSPredicate(format: "NOT (uid IN %@)", uids)
但是,我正在使用 SUBQUERY 在 NSPredicate 中尝试这种“NOT IN”语法,但它不起作用(但也不会崩溃):
NSPredicate(format:"SUBQUERY(forests.treeFamily, $tree, NOT ($tree._id IN %@)) .@count > 0", arrayOfTreesIds)
虽然以下“IN”语法可以正常工作:
NSPredicate(format:"SUBQUERY(forests.treeFamily, $tree, $tree._id IN %@) .@count > 0", arrayOfTreesIds)
知道如何实现这一目标吗?
更新
Jay 的回答让我觉得我对架构/类不够清楚。
让我们以狗为例。
我们有一个 ShelterClass,它具有 Dogs 的属性。它是一组 Dog 对象,用于跟踪收容所中托管的狗。
Dog 类有一个“race”属性,它是对 Race 类的引用。
我想过滤没有某些狗种族的收容所。 虽然我会用它来过滤确实有某些狗种族的收容所:
NSPredicate(format:"SUBQUERY(dogs.race, $race, $race._id IN %@) .@count > 0", arrayOfRaceIds)
我找不到如何过滤掉/使用“NOT IN”语法。
【问题讨论】:
-
感谢您的澄清。如果我没看错,请查看我的更新答案。
标签: swift realm nspredicate