問題発生
XcodeでCore Data有りのProjectを作成
デフォルトのエンティティに加え
「Task」という名前のエンティティを追加
すると以下のような謎のエラー
Generic struct 'FetchRequest' requires that 'Task<Success, Failure>'
conform to 'NSFetchRequestResult'
が発生
解決手順
まずは、Core Dataで定義したTaskエンティティが、
Core DataのNSManagedObject(Core Dataのデータを扱うための特別なオブジェクト)であることを確認
しかし、そもそも、そのコードを記述するのに必要な
・Task+CoreDataClass.swift
・Task+CoreDataProperties.swift
の2ファイルが存在しない🤔
なのでこの2ファイルを
手動で作成する必要が出てきてしまいました
🔹 自動生成手順
・Xcodeのデータモデル(.xcdatamodeld)を開く。
・左側のCore DataのManagerから該当のエンティティを選択。
・Editorタブ > Create NSManagedObject Subclass をクリック。
・「Model(プロジェクト名.xcdatamodeld)」を選択して「Next」。
・「Task」を選択し、「Next」。
・保存先を選択して、「Create」。
これで、2つのファイルが生成され、エラーも解消されました
エンティティ名の問題
しかし、追加で問題が・・・😅
ここで作成した「Task」というエンティティ名が
Swiftの標準ライブラリにも存在する型(非同期処理用のTask)と衝突することが判明
結局エンティティ名をTaskからMyTask等に変更する羽目に😭
まとめ
✅Core Dataのエンティティの定義に必要なファイルが無ければ手動で生成する
✅Core Dataのエンティティ名はライブラリの名前等と重複しないように気を付ける
以上です。
よろしくお願いします。