NSFetchRequest谓词不一致iOS(NSFetchedResultsController)vs Mac(NSArrayController)

时间:2015-05-24 02:55:44

标签: ios macos core-data nsfetchedresultscontroller nsfetchrequest

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

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

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

1 个答案:

答案 0 :(得分:0)

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