
【開発iOS12】CoreDataを追加するのを忘れていた俺氏、、、
概要
今、SwiftUIの本4冊分をまとめた結構、膨大(ビューで言うと、300個くらい)な物を今後、本がなくても見返せるように作ってんだけど、、、、
の10章を昨日今日でまとめて、
managedObjectContext
で4冊目にしてやっとこ、SwiftUIでCoreDataが出てきて気づいたんだが、、、
プロジェクトファイル作るときに
CoreDataを使うにチェックを入れるの忘れてた〜〜〜〜〜〜😵😵🥺
で、一瞬冷えたけど、よくよく考えてみたら、
プロジェクトでデータ管理が後から追加になった時に対処できないのはおかしい
↓
対処できるはず
↓
ネットでちょっと調べた結果、、、、
みたいな記事があったので、
現在の仕様とは違うけど参考にしてみた。
要は、
CoreDataを使う用に必要なファイルとかメソッドを追加していけばいい
てことだから、実際にやってみた。
1 CoreDataを使うにチェックしたダミーファイルを作る

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

・Persistence
・データモデルのファイル
あるかないかの違いに気づく。
3 必要な箇所を追加とか修正していく
⒈Persistenceファイルを追加


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


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

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


⒉ データモデルを追加



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

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


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







エラーが無事消えたことを確認。
⒋ Appに必要なコードを追加する
と、ここまでは個別の操作だったんだけど、プロジェクト全体を管理するファイルも何か必要がないか最後にチェックしてみる


比較すると、
let persistenceController = PersistenceController.shared
と
.environment(\.managedObjectContext, persistenceController.container.viewContext)
てコードが差異だとわかるので修正

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

完了。
まとめ
今後、何があるかは、実際に、冒頭に紹介した本の13章をやった後でまた追記しよ。
あくまでも、
応急的に、AppStoreとかに公開を予定してないプロジェクトファイルでやった話で、どこに影響があるかもわからないから、公開を予定してるAppに関しては、新規作成時に、ちゃんとUse CoreDataにチェックを入れておいた方が無難。
以上。
備忘録も兼ねて書き込みでした〜〜〜〜〜🕺