我实际上有一个名为“Show”的核心数据实体,对于每个节目,我都有一个名为“Schedule”的关系,其中包含一个名为“schedules”的属性,它是一个数组。
我想要做的是创建一个谓词来检查给定节目的时间表是否有超过 1 个项目。
为此,我尝试了两种解决方案:
NSPredicate * predicate = [NSPredicate predicateWithFormat:@"schedule.schedules > 1];
NSPredicate * predicate = [NSPredicate predicateWithFormat:@"schedule.schedules.@count > 1];
但是它们都不起作用。
注意:schedules 属性作为可转换存储在我的核心数据中,并声明为 id 变量。
最佳答案
可转换属性存储为二进制数据,并且在容器实体加载到内存中之前不会解包。因此,您不能在获取中使用基于可转换属性的任何类型的谓词。它只会过滤获取的结果。
廉价的解决方案是存储一个带有计数的简单整数属性并使用它。
更好的解决方案可能会添加/更改您的实体,以便您使用关系而不是可转换实体。
关于ios - NSPredicate 对关系属性的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29413404/