我们说我有Employee
个与WorkShift
个shifts
个对象有{1}个关系的对象。WorkShift
startDate
具有Employee
属性,用于标记何时开始转换。
我想获取所有未在两个日期之间开始工作的员工,即如果WorkShift
在A和B日期之间有startDate
个Employee
个记录,那么我想在我的结果集中包含shifts
。
如果我只是需要找到shifts.@count = 0
完全为空的员工,我相信我可以使用shifts
的谓词,但我需要根据{{1}过滤startDate
然后检查是否@count = 0
,但我不知道如何在谓词中执行此操作。
有什么建议吗?
答案 0 :(得分:1)
我设法根据其他一些关于SUBQUERY
的帖子来解决这个问题NSPredicate *predicate = [NSPredicate predicateWithFormat:
@"SUBQUERY(shifts, $x, %@ <= $x.startDate and $x.startDate <= %@).@count == 0",
beginningOfDateRange, endingOfDateRange);
SUBQUERY
函数将有问题的关系(集合)作为第一个参数。第二个参数只是一个变量定义,当我在第三个参数中构建条件时,我将使用$x
来引用关系集合中的每个项目。然后,当然,第三个参数是我用来减少集合的过滤器。我在两个日期之间查找了WorkShift
startDate
个Employees
个记录..但我希望所有WorkShift
都没有,所以我使用子查询找到该范围内的所有.@count == 0
条记录,然后检查{{1}}以确保该范围内没有任何记录。
有点大脑扭曲,但它就像一个魅力。