NSPredicate指望关系属性

时间:2015-04-02 12:48:59

标签: ios core-data nspredicate

我实际上有一个名为Show的核心数据实体,对于每个节目,我都有一个名为Schedule的关系,它包含一个名为schedules的属性,它是一个数组。

我想要做的是创建一个谓词,如果它有超过1个项目,则检查给定节目的时间表。

要做到这一点我尝试了两种解决方案:

  1. NSPredicate * predicate = [NSPredicate predicateWithFormat:@"schedule.schedules > 1];

  2. NSPredicate * predicate = [NSPredicate predicateWithFormat:@"schedule.schedules.@count > 1];

  3. 但他们都没有用。

    注意:schedules属性存储在我的Core Data中作为Transformable并声明为id变量。

2 个答案:

答案 0 :(得分:2)

可转换属性存储为二进制数据,并且在容器实体加载到内存之前不会解压缩。因此,您不能使用基于fetch中的可转换属性的任何类型的谓词。它只能过滤获取的结果。

廉价的解决方案是存储一个带有count的简单整数属性并使用它。

更好的解决方案可能是添加/更改您的实体,因此您使用关系而不是可转换。

答案 1 :(得分:0)

你试过这个吗?

NSPredicate * predicate = [NSPredicate predicateWithFormat:@"@count.schedule.schedules > 1];