Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 核心数据:根据实体类型对抽象实体的结果进行排序_Objective C_Cocoa_Core Data_Cocoa Bindings - Fatal编程技术网

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后端可以为恢复对象图的一部分提供一种可能的优化,那么使用它会很有趣。