見出し画像

【開発iOS12】CoreDataを追加するのを忘れていた俺氏、、、

概要

今、SwiftUIの本4冊分をまとめた結構、膨大(ビューで言うと、300個くらい)な物を今後、本がなくても見返せるように作ってんだけど、、、、

の10章を昨日今日でまとめて、
managedObjectContext

で4冊目にしてやっとこ、SwiftUIでCoreDataが出てきて気づいたんだが、、、

プロジェクトファイル作るときに

CoreDataを使うにチェックを入れるの忘れてた〜〜〜〜〜〜😵😵🥺

で、一瞬冷えたけど、よくよく考えてみたら、

プロジェクトでデータ管理が後から追加になった時に対処できないのはおかしい

対処できるはず

ネットでちょっと調べた結果、、、、

みたいな記事があったので、
現在の仕様とは違うけど参考にしてみた。

要は、

CoreDataを使う用に必要なファイルとかメソッドを追加していけばいい

てことだから、実際にやってみた。

1 CoreDataを使うにチェックしたダミーファイルを作る

2 追加したいプロジェクトと差異を比較

・Persistence
・データモデルのファイル

あるかないかの違いに気づく。

3 必要な箇所を追加とか修正していく

⒈Persistenceファイルを追加

SwiftFileを選択してNext
persistenceと名前を付けてCreate

ありの方と比較すると、ここでCoreDataフレームワークを管理してることに気づく

あり
なし

なので、ありのPersistenceの内容を、まんまコードごとコピーしてなしの方に貼り付ける

貼り付け後

エラーについては一旦気にせず、
ありの方のファイル名が入ってる箇所を修正

修正前
修正後

⒉ データモデルを追加

Data Modelを選択してNext
何かあると嫌なので、プロジェクト名と同じ名前を記入して、Createを押す
おお!👀。エンティティなんかが管理できるデータモデルが追加された。

⒊ Persistenceファイルのエラーを消す作業

Persistenceファイルには、CoreDataがきちんとインポートできているのに、
Itemてのがないぞ!!!
て赤いエラーが発生してることに気づく。

Itemとはなんぞや?

で、⒉で作ったデータモデルをありとなしで比較してみる

ありのファイル。お!? Itemってエンティティがあるね👀
なしにはエンティティが全くないね、、、💦

てことで、なしのデータモデルにエンティティを追加して、名前をItemにしてみる

真ん中の下にあるAddEntityをクリック
Entityが追加される
Defaultを選択すると、Entityが追加されてる
追加されたEntityをItemにリネーム
上のEntityもItemに変更された
ついでにAttributeでありの方と同じにtimestampをDateで追加しとく。

エラーが無事消えたことを確認。

⒋ Appに必要なコードを追加する

と、ここまでは個別の操作だったんだけど、プロジェクト全体を管理するファイルも何か必要がないか最後にチェックしてみる

あり
なし

比較すると、

let persistenceController = PersistenceController.shared

.environment(\.managedObjectContextpersistenceController.container.viewContext)

てコードが差異だとわかるので修正

修正後

⒌プロジェクトファイルを一度開き直してみる

開きっぱなしだとビルドフォルダが、うまく追加修正された内容を認識してない可能性があるので、最後に、プロジェクト自体を一旦閉じて開き直してみる。

無事、開けき直せてエラーもない様子

完了。

まとめ

今後、何があるかは、実際に、冒頭に紹介した本の13章をやった後でまた追記しよ。

あくまでも、

応急的に、AppStoreとかに公開を予定してないプロジェクトファイルでやった話で、どこに影響があるかもわからないから、公開を予定してるAppに関しては、新規作成時に、ちゃんとUse CoreDataにチェックを入れておいた方が無難。

以上。
備忘録も兼ねて書き込みでした〜〜〜〜〜🕺


この記事が気に入ったらサポートをしてみませんか?