Ben*_*hen 7 iphone core-data nsfetchrequest ios
我想NSFetchRequest按实体对结果进行分组.实体都共享相同的抽象父级.例如:
animal
|
|-cat
|
|-dog
Run Code Online (Sandbox Code Playgroud)
在NSFetchRequest已includesSubentities设定TRUE和entity设定animal.它可以设置sectionNameKeyPathNSFetchedResultsController来的entity.name,但它是不可能做的一样sortDescriptors的的NSFetchRequest由于事实sortDescriptors是(在数据库中的数据,即,在不类方法)应用到存储的属性.因此,按实体类型分组的唯一方法是向超类添加属性,子类可以使用该属性来标识自己.
这似乎很疯狂,因为它破坏了继承的有用性.我查看了SQLite数据库,实体类型与属性存储在同一个表中,因此所需的数据已经存在.
总结:是否可以在NSFetchRequest不添加其他属性的情况下按子类排序?
我想答案是否定的。
获取和排序发生在存储中(对于 SQLLite 存储),因此属性需要成为数据模型的一部分。来自核心数据编程指南(持久存储功能):
获取和存储类型之间存在一些交互。在 XML、二进制和内存存储中,谓词和排序描述符的评估是在 Objective-C 中执行的,可以访问所有 Cocoa 的功能,包括 NSString 上的比较方法。另一方面,SQL 存储将谓词和排序描述符编译为 SQL,并在数据库本身中评估结果。这样做主要是为了性能,但这意味着评估发生在非 Cocoa 环境中,因此依赖 Cocoa 的排序描述符(或谓词)无法工作。
还
此外,您无法使用 SQLite 存储对瞬态属性进行排序。
| 归档时间: |
|
| 查看次数: |
659 次 |
| 最近记录: |