リリース ノートによると、Xcode 9 はフェッチされたインデックスのサポートを追加します。
「データ モデル エディターは、Core Data の新しいフェッチ インデックス機能と既存のプロパティ インデックスおよびエンティティ複合インデックス機能の統合インターフェイスを提供します。古いデータ モデルは編集用にフェッチ インデックス形式に変換され、必要に応じて古いファイル形式に保存されます。 iOS 11、watchOS 4、macOS 10.13、または tvOS 11 より前の展開ターゲットでデータ モデルをコンパイルすると、引き続き互換性のあるコンパイル済みフォームが生成されます。(30843153)"
私のプロジェクトでは、現時点で展開ターゲットが iOS 9 に設定されていますが、CoreData モデルをコンパイルできません。複合インデックス セットを持つすべてのエンティティに対して次のエラーが発生します。
Model.xcdatamodeld/Model.xcdatamodel:MyEntity|compoundIndex[0]: error: Expression requires a concrete result type.
Model.xcdatamodeld/Model.xcdatamodel:MyEntity|compoundIndex[0]: error: Expression attributes are not compatible with the current deployment target.
Model.xcdatamodeld/Model.xcdatamodel:MyEntity|compoundIndex[1]: error: Expression requires a concrete result type.
Model.xcdatamodeld/Model.xcdatamodel:MyEntity|compoundIndex[1]: error: Expression attributes are not compatible with the current deployment target.
Model.xcdatamodeld/Model.xcdatamodel:MyEntity: error: Fetch Indexes feature requires iOS deployment target 11.0 or later
Model.xcdatamodeld/Model.xcdatamodel:MyEntity: error: Fetch Indexes feature requires Xcode 9.0 tools or later
ビルドエラーを修正する方法はありますか?
更新:
Xcode 9 は、「既知の問題」セクションに記載されているように、リレーションシップから作成されたものを除くすべてのケースで、複合インデックスをフェッチ インデックスに正しく変換します。
データ モデル エディターは、このベータ版の属性と式からのフェッチ インデックスの作成のみをサポートし、リレーションシップからは作成しません。(32407895)
影響を受けるフェッチ インデックスは次のようになり、ドロップダウン メニューから選択できるのは属性のみです。
ただし、ドキュメントに記載されている回避策はありません。