NSFetchRequest 基于数组 属性 大小
NSFetchRequest based on array property size
我有一个 NSManagedObject
,它有一个(可转换的)NSArray
属性 arrayProperty
.
我想对 属性 大小小于 5 的对象执行提取请求过滤。我试过了
[NSPredicate predicateWithFormat:@"arrayProperty.@count <= 5"]
和
[NSPredicate predicateWithFormat:@"arrayProperty[SIZE] <= 5"]
但其中 none 有效(给出 Unsupported function expression count
和 Unsupported function [SIZE]
)。
有办法实现吗?
这种事情对于可变形属性是不可能的。 Transformable 用于存储数据很方便,但一旦存储起来,它们就是全部——一堆字节,没有关于创建它们的数据结构的信息。 SQLite 不知道它是一个数组,所以它不能做一些事情,比如计算数组中有多少项。
如果您使用可转换属性,您将失去任何基于它们进行过滤的能力,除了极其基本的测试,例如值是否为 nil。
如果需要进行这种过滤,则需要考虑如何更改数据模型。一种可能性是不保存数组,而是创建一个具有一对多关系的新实体来存储值。
我有一个 NSManagedObject
,它有一个(可转换的)NSArray
属性 arrayProperty
.
我想对 属性 大小小于 5 的对象执行提取请求过滤。我试过了
[NSPredicate predicateWithFormat:@"arrayProperty.@count <= 5"]
和
[NSPredicate predicateWithFormat:@"arrayProperty[SIZE] <= 5"]
但其中 none 有效(给出 Unsupported function expression count
和 Unsupported function [SIZE]
)。
有办法实现吗?
这种事情对于可变形属性是不可能的。 Transformable 用于存储数据很方便,但一旦存储起来,它们就是全部——一堆字节,没有关于创建它们的数据结构的信息。 SQLite 不知道它是一个数组,所以它不能做一些事情,比如计算数组中有多少项。
如果您使用可转换属性,您将失去任何基于它们进行过滤的能力,除了极其基本的测试,例如值是否为 nil。
如果需要进行这种过滤,则需要考虑如何更改数据模型。一种可能性是不保存数组,而是创建一个具有一对多关系的新实体来存储值。