ios - NSPredicate 对关系属性的计数

标签 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];

但是它们都不起作用。

注意:schedules 属性作为可转换存储在我的核心数据中,并声明为 id 变量。

最佳答案

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

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

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

关于ios - NSPredicate 对关系属性的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29413404/

相关文章:

ios - YouTube-Player-iOS-Helper 不能使用 YTPlayerView 类

uinavigationcontroller - 重复调用UINavigationController 的push 导致访问错误

objective-c - 新对象的 NSFetchedResultsController

iphone - 如何创建一个NSManagedObject

ios - 如何使用 NSPredicate 过滤 NSArray

ios - 自定义 View 上的辅助功能 VoiceOver 类似于 Collection View

ios - CellForItemAt : index path not updating variable

ios - 如何在核心数据中保存单选按钮选项?

iphone - 具有 NSData 属性的核心数据

objective-c - 问题过滤 NSArrayController