我有两个核心数据实体,比如经理和员工。每位经理都有两名员工。员工有一个小时整数,当他们计时和他们退出时。 如何创建一个谓词来检查经理是否有雇员在一定时间之前上班并在一定时间后退出?
如果关系表达为数组而不是set,我可以这样做:
[NSPredicate predicateWithFormat:@"SELF.employees[0] > %i && SELF.employees[1] < %i", clockIn, clockOut];
我也可以将检查时间和签出时间分开作为具有相同属性的两个独立实体,但这似乎违背了OOP的整个概念。
[NSPredicate predicateWithFormat:@"SELF.employees.in.hour > %i && SELF.employees.out.hour < %i", clockIn, clockOut];
我还尝试向Manager添加一个返回“in”的类别,但是我在实体中找不到 Keypath ... 错误。
答案 0 :(得分:1)
您可以使用汇总运算符ALL
,ANY
,SOME
和NONE
:
[NSPredicate predicateWithFormat:@"ALL employees.inTime > %i && ALL employees.outTime < %i", clockIn, clockOut];
您还没有说出命名的inTime和outTime属性是什么,因此适当替换。