【SwiftUI】Core Dataの使い方:エンティエィ(Entity)を定義する

(2021/02/16 更新)

Xcodeでエンティティを定義する方法を解説します。

スポンサーリンク

環境

この記事の情報は次のバージョンで動作確認しています。

【Xcode】12.4
【Swift】5.3.2
【iOS】14.4
【macOS】Big Sur バージョン 11.1
スポンサーリンク

エンティティとは

Core Dataにおけるエンティティとは、DBのテーブルをクラスで表したもので、テーブルが持つ属性やリレーションなどの情報を持ちます。
Core DataではDBのレコードをオブジェクトとして扱う為、このクラス定義が必要となります。

スポンサーリンク

エンティティを定義する

エンティティの定義には、XcodeのModel Editor(拡張子が.xcdatamodeld)を使用します。
Model Editorはプロジェクト作成時にUse Core Dataチェックを入れると自動で生成されますが、後から手動でファイル追加も可能です。

エンティティを定義する

エンティティの生成方法

  1. 左のProject navigatorでModel Editorを選択
  2. 画面下部のAdd Entityボタンのクリックで、エンティティ(Entity)が追加される
  3. 追加されたEntityをクリックして名称を変更する(1文字目は大文字必須)

エンティの削除方法

  1. 対象のエンティティを選択した状態でキーボードのDeleteキーを押す

属性情報の変更方法

  1. エンティティを選択すると、右のAttributesに対象エンティティの属性情報が表示される
  2. Attributes下の「+」ボタンで属性追加、「ー」ボタンで属性削除
  3. 属性名のクリックで名称変更が可能(1文字目は小文字必須)
  4. Typeを選択すると属性のタイプが変更可能
スポンサーリンク

エンティティのクラスファイル生成について

定義したエンティティに対応するクラスファイルは、デフォルトの設定ではビルド時に自動生成されます。
その為、ビルド前にコードで該当クラスを使う記述があると、次のようにエラー"Cannot find type 'xxxxx' in scope"が発生する場合がありますが、一度ビルドを実行すると解消します。

エンティティのクラスファイル生成について

コード生成オプション

エンティティのコード生成オプション(Codegen)で、クラスファイルの生成方式を選択可能です。
Model Editorで対象のエンティティを選択し、属性インスペクタを開くとコード生成オプション(Codegen)の設定を確認/変更できます。

コード生成オプション

選択できるオプション次の3つです。

Class Definition(デフォルト設定)

エンティティに対応したクラスをビルド時に自動生成します。
ソースコードは生成されませんので、コードによるカスタマイズが不要の場合は、こちらを選択します。
手動で作成したコードが存在しているとビルド時に重複エラー"Multiple commands produce ..."となりますので注意して下さい。

Manual/None

エンティティに対応したクラスをビルド時に自動生成しません。
こちらを選択した場合は後述する方法でコードを生成する必要があります。
必要なファイルは次の2つ

エンティティ名+CoreDataClass.swift
エンティティに固有の実装を定義するファイル。

エンティティ名+CoreDataProperties.swift
エンティティの属性情報を定義するファイル。

Category/Extention

エンティティに対応した2つのコードのうち、エンティティの固有実装を定義する"エンティティ名+CoreDataClass.swift"をビルド時に自動生成しません
属性情報はModel Editor上で設定し、固有の実装のみコードで記述したい場合にはこちらを選択します。

スポンサーリンク

コードの手動生成方法

Model Editorを開き対象のエンティティを選択した状態で、メニューより Editor > Create NSManagedObject Subclass...を選びます。

1.対象のデータモデルを選択
「Next」を選択でOK

データモデルの選択

2.対象のエンティティ(Entity)を選択
コードを生成したい、エンティティをチェックして「Next」

エンティティの選択

3.フォルダの選択
コードを格納するフォルダを選択して「Create」

フォルダの選択

※画面右側の上部が実フォルダの場所、下部のGroupがXcodeのProject navigtorでの表示位置を示します。

生成されるコード

次の2種類のコードが生成されます。

生成されるコード

エンティティ名+CoreDataClass.swift

エンティティに固有の実装を定義する為のファイルです。

エンティティ名+CoreDataProperties.swift

エンティティの属性情報を定義するファイルです。

スポンサーリンク

合わせて読みたい記事

【SwiftUI】Core Dataの使い方:準備編
SwiftUIでCore Dataを扱うための前提知識と、新規プロジェクトの作成方法について解説します。
【SwiftUI】Core Dataの使い方:基本編
SwiftUIでCore Dataの基本的な使い方を簡単なTodoリストアプリを例に解説します。
【SwiftUI】Core Dataの使い方:標準テンプレートを読み解く
SwiftUIでのCore Dataの使い方を、標準テンプレートを読み解きながら解説します。
スポンサーリンク
SwiftUI
カピ通信