gpt4 book ai didi

iphone - 是否可以在不添加其他属性的情况下按 `NSFetchRequest` 中的子类排序?

转载 作者:可可西里 更新时间:2023-11-01 03:34:02 26 4
gpt4 key购买 nike

我想按实体对 NSFetchRequest 的结果进行分组。这些实体都共享相同的抽象父级。例如:

animal
|
|-cat
|
|-dog

NSFetchRequestincludesSubentities 设置为 TRUE 并将 entity 设置为 animal。可以将 NSFetchedResultsController 的 sectionNameKeyPath 设置为 entity.name 但不可能对 sortDescriptors 做同样的事情NSFetchRequest 因为 sortDescriptors 应用于存储的属性(即数据库中的数据,而不是类中的方法)。因此,按实体类型分组的唯一方法是向父类(super class)添加一个属性,子类可以使用该属性来标识自己。

这看起来很疯狂,因为它破坏了继承的实用性。我查看了 SQLite 数据库,实体类型与属性存储在同一个表中,因此所需的数据已经存在。

总结:是否可以在 NSFetchRequest 中按子类排序而不添加额外的属性?

最佳答案

我认为答案是否定的。

获取和排序发生在存储(对于 SQLLite 存储)中,因此属性需要是数据模型的一部分。来自核心数据编程指南(持久存储功能):

There are some interactions between fetching and the type of store. In the XML, binary, and in-memory stores, evaluation of the predicate and sort descriptors is performed in Objective-C with access to all Cocoa's functionality, including the comparison methods on NSString. The SQL store, on the other hand, compiles the predicate and sort descriptors to SQL and evaluates the result in the database itself. This is done primarily for performance, but it means that evaluation happens in a non-Cocoa environment, and so sort descriptors (or predicates) that rely on Cocoa cannot work.

还有

In addition you cannot sort on transient properties using the SQLite store.

关于iphone - 是否可以在不添加其他属性的情况下按 `NSFetchRequest` 中的子类排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3931442/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com