【问题标题】:NSFetchRequest predicate inconsistency iOS (NSFetchedResultsController) vs Mac (NSArrayController)NSFetchRequest 谓词不一致 iOS (NSFetchedResultsController) 与 Mac (NSArrayController)
【发布时间】:2015-05-24 02:55:43
【问题描述】:

在使用 NSFetchRequest 和谓词包含由对象类定义的属性而不是实体属性的一部分时,iOS 上的 NSFetchedResultsController 和 Mac 上的 NSArrayController 之间存在不一致。

考虑由类 Foo 实现的托管对象实体 Foo。 Foo 包含一个属性 BOOL isFoo,该属性由 Foo 类实现,但不受属性支持(即不是实体 Foo 架构的一部分)。现在在 NSArrayController 的谓词中使用 isFoo 作为条件就可以了。有人会假设这意味着谓词在获取对象后应用于对象,因此命中对象类。但是,在 iOS 上,使用相同的谓词会导致 isFoo 的 NSInvalidArgumentException 未找到。在 iOS 上,谓词似乎在创建 Foo 对象之前在 NSSQLEntity 对象上进行了评估。

需要一个相当具体的跨平台项目来展示这一点,但我还没有找到说明这种差异的文档。

【问题讨论】:

    标签: ios macos core-data nsfetchedresultscontroller nsfetchrequest


    【解决方案1】:

    在我的具体情况下,有问题的属性只是实体中存在的属性的包装器,因此我可以专门针对 iOS 修改我的谓词。然而,在一般情况下,这可能是 NSFetchedResultsController 的主要限制。

    【讨论】:

      猜你喜欢
      • 2011-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-23
      • 1970-01-01
      • 2011-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多