Objective c 核心数据:根据实体类型对抽象实体的结果进行排序
是否可以根据实体类型对核心数据的结果进行排序,但:Objective c 核心数据:根据实体类型对抽象实体的结果进行排序,objective-c,cocoa,core-data,cocoa-bindings,Objective C,Cocoa,Core Data,Cocoa Bindings,是否可以根据实体类型对核心数据的结果进行排序,但: 不需要添加名为entityType之类的伪属性 使用KVO/KVC技巧,例如引入-(NSString*)实体类型或类似类型,不会对性能造成不利影响 我目前有: TradeDocument作为抽象实体,具有 QuoteTradeDocument和InvoiceTradeDocument作为基于它的实体 我想显示实体类型和/或允许基于此对NSTableView进行排序 我在OSX上使用Cocoa绑定 注意:我明确地试图避免对每个对象造成错
- 不需要添加名为
之类的伪属性entityType
- 使用KVO/KVC技巧,例如引入
或类似类型,不会对性能造成不利影响-(NSString*)实体类型
作为抽象实体,具有TradeDocument
和QuoteTradeDocument
作为基于它的实体李>InvoiceTradeDocument
NSTableView
进行排序
我在OSX上使用Cocoa绑定
注意:我明确地试图避免对每个对象造成错误 伊万 抽象实体的唯一限制是不能实例化一个实体。你还可以去拿。然后,测试每个托管对象的子类是一个相当简单的问题 排序类型不是排序描述符可以做的事情,而是函数可以做的事情,就像
-sortUsingFunction:context:
Andrew然而,这意味着每个对象都会出现故障。我尽量避免这样。由于核心数据必须在SQLite中存储对象类型,我非常想知道是否有公开的方法将其用作排序标准。Ivan,您可以在不损坏对象或填充行缓存的情况下读入对象。请参阅NSFetchRequest上的-includePropertyValue。您将能够使用-isKindOfClass:反省对象的类型,而不会引发错误。换句话说,我上面的答案仍然很好。如果您希望这种情况发生在SQLite中,那么我认为您运气不好。安德烈·汉克斯。令人遗憾的是,苹果没有想到这种排序方法,并将其应用到SQLite中。我可能需要将获取请求以代码形式放入NSArrayController中,对吗?您的解决方案看起来不错,但我会看看是否有其他人提供了一个更优化的解决方案,一个可以在持久存储中使用某种现有的、索引的数据结构的解决方案。如果没有人来,我会接受你的回答。伊万,核心数据与ORM不同。正如他们所说,它是一个对象图管理器。SQLite只是几种持久性机制中的一种,我完全了解它。但是,如果SQLite后端可以为恢复对象图的一部分提供一种可能的优化,那么使用它会很有趣。