1

當使用包含由對象類定義的屬性而不是實體屬性的一部分的屬性的謂詞使用NSFetchRequest時,iOS上的NSFetchedResultsController和Mac上的NSArrayController之間存在不一致。NSFetchRequest謂詞不一致iOS(NSFetchedResultsController)與Mac(NSArrayController)

考慮由Foo類實現的託管對象實體Foo。 Foo包含一個屬性BOOL isFoo,它由Foo類實現,但不支持屬性(即不是實體Foo的模式的一部分)。現在使用isFoo作爲NSArrayController的謂詞條件工作得很好。人們會認爲這意味着謂詞在被取出後應用於該對象,從而觸及對象類。但是,在iOS上,使用相同的謂詞會導致找不到isFoo的NSInvalidArgumentException。在iOS上,謂詞似乎在創建Foo對象之前在NSSQLEntity對象上進行評估。

它需要一個相當具體的跨平臺項目來展示這一點,但我還沒有找到說明這種差異的文檔。

回答

0

在我的具體情況下,有問題的屬性只是一個包含在實體中的屬性的包裝,所以我可以修改我的謂詞專門爲iOS。然而,在一般情況下,這可能是NSFetchedResultsController的主要限制。

相關問題