我想对结果进行分组NSFetchRequest
按实体。这些实体都共享相同的抽象父级。例如:
animal
|
|-cat
|
|-dog
The NSFetchRequest
has includesSubentities
set TRUE
and entity
set to animal
。可以设置sectionNameKeyPath
NSFetchedResultsController 到entity.name
但不可能对sortDescriptors
of the NSFetchRequest
由于以下事实:sortDescriptors
应用于存储的属性(即数据库中的数据,而不是类上的方法)。因此,按实体类型分组的唯一方法是向超类添加一个属性,子类可以使用该属性来标识自己。
这看起来很疯狂,因为它破坏了继承的用处。我查看了 SQLite 数据库,实体类型与属性存储在同一个表中,因此所需的数据已经就位。
总之:是否可以按子类排序NSFetchRequest
不添加额外的属性?
我想答案是否定的。
获取和排序发生在存储中(对于 SQLite 存储),因此属性需要成为数据模型的一部分。来自核心数据编程指南(持久存储功能):
获取和存储类型之间存在一些交互。在 XML、二进制和内存存储中,谓词和排序描述符的评估是在 Objective-C 中执行的,可以访问所有 Cocoa 的功能,包括 NSString 上的比较方法。另一方面,SQL 存储将谓词和排序描述符编译为 SQL,并在数据库本身中评估结果。这样做主要是为了性能,但这意味着评估发生在非 Cocoa 环境中,因此依赖 Cocoa 的排序描述符(或谓词)无法工作。
also
此外,您无法使用 SQLite 存储对瞬态属性进行排序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)