CoreDataをSwiftUIと一緒に使っていて、Previewを表示させるまでのステップ

CoreDataを使っていると、SwiftUIのプレビューをきちんと表示させるまでにいくつかステップが必要です。そのためのメモ

まずは、NSManagedObjectContext

大抵、@FetchRequestを使っていると思いますが、@FetchRequestは、environmentにNSManagedObjectContextが設定されていることを期待しています。
Previewでも同じなので、セットする必要があります。

Previewにおためしの要素が欲しいですよね

CoreDataからデータを取得してそれを表示するためのビューで、表示対象の要素がなければ、Previewも空っぽです。
配置の具合を見たいので、何か要素が必要ですよね。

MEMO
  • 以下のサンプルコードで使っているRecordは、CoreDataでEntityとして定義されたものです。

以下のようなextentionを作って、サンプルを作れるようにします。

それを使って、Previewの中でCoreDataに要素を作成します。

これで、要素が設定されているCoreDataを対象として、Previewが表示されることになります。

問題点

CoreDataは、データを永続化するものなので、Previewすると要素が増えていきます・・・
気になる人は、CoreDataでのconstraintで何かのプロパティを制約条件にすると、Previewを動作させると制約が有効になり、要素が減ります。
# ただ、Previewを動作させないと、要素は減りません・・・Previewだとどの段階でCoreDataは動作してるんでしょうね?

もしくは、要素をクリアするメソッドをどこかにつくって、動かすのも良いかもしれません。まぁ、Previewで配置を見たいだけなので、だれも気にしないですかね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です