SwiftDataインデックス ノート

SwiftDataインデックス

iOS 17で導入されたSwiftDataは、当初データベースインデックス機能を欠いていました。iOS 18ではこの欠陥が修正され、フェッチインデックスを使用することでデータベースの検索を高速化できるようになりました。Core Dataは、特定のプロパティに基づいてデータベース検索を高速化するフェッチインデックスの追加を長年サポートしています。XcodeのCore Dataモデルエディタでは、エンティティを選択し、「フェッチインデックスを追加」オプションを使用することでフェッチインデックスを追加できます。しかし、iOS 18でSwiftDataへのフェッチインデックスのサポートが導入されたにもかかわらず、Xcode 16ではフェッチインデックスはサポートされていないという警告が表示されます。SwiftDataフェッチインデックスを追加するには、各インデックスのキーパスを指定するために#Indexマクロを使用します。#Indexマクロはモデルクラスごとに1回しか使用できないため、すべてのインデックスは単一のマクロにリストする必要があります。重複するプロパティを持つ項目をソートするのに役立つ複合インデックスも追加できます。詳細については、「SwiftDataの新機能」に関するWWDC24のドキュメントを参照してください。