🎉

CoreDataのエンティティを作ったらClean Build Folderをしよう

2024/02/16に公開

CoreDataに限らずApple固有のテクノロジーに関しては日本語の資料が少ない・・・
備忘録がわりに書く。

まずCoreDataを利用するプロジェクトを作る

Xcodeを立ち上げ、SwiftUIプロジェクトを作り、その際にUse CoreDataを選択。
するとモデルを定義するxcdatamodeldと、永続データを扱うための設定ファイルであるPersistence.swiftが作られて、自動的にContentView.swiftにサンプルコードが書き込まれています。
基本的なアプリを作るならば、サンプルで書き込まれたコードを参考にしてカスタマイズしていきます。

CoreDataのCodegen

ですが、元から設定されているエンティティであるItemではなく、後から自分が作ったエンティティを使いたくてサンプルコードを書き込んでもエラーになります。どうやら、エンティティに基づいたClassがないということです。
手動で作ってもいいのですが、どちらにしろxcadatamodeldのファイルの設定をいじる必要があります。
もとからあるItemも自分で作ったエンティティもCodegenというプロパティがClass Definitionという値に設定されています。
このCodegenとは、Xcodeが自動的にエンティティに基づいたモデルクラスを作ってくれるという設定です。デフォルトでこの値です。
確認するにはエンティティを選んだ状態で、右上にあるボタンをおしてインスペクタを出現させなければなりません。

Clean Build FolderしないとXcodeがクラスを認識しない

ですが、先ほども言ったようにエラーになります。ということでChat-GPTに聞いたところProduct < Clean Build Folder をしないといけないようです。
微妙に不便なんですよね・・・。

Discussion