SwiftUIでCoredataを使用した場合のテンプレを正しく表示する

SWIFTUI

どうも、インディです。

今回はswiftUIでCoreDataを使用したときに起こるエラーとその解決方法です。

初めてswiftUIでCoreDataを使用してアプリを立ち上げたところ、なぜか標準テンプレートでエラーを吐いていました。。。

画面を立ち上げると真っ白な画面のみ。

これを調べたところ、どうやらテンプレート自体が未完成なままとのこと。

なんで標準からこうなっているのか謎ですが以下のように修正したらうまくいきました。

‘ContentView.swift’

var body: some View {
        List {
            ForEach(items) { item in
                Text("Item at \\(item.timestamp!, formatter: itemFormatter)")
            }
            .onDelete(perform: deleteItems)
        }
        .toolbar {
            #if os(iOS)
            EditButton()
            #endif

            Button(action: addItem) {
                Label("Add Item", systemImage: "plus")
            }
        }
    }

この部分を以下のように変更してください。

var body: some View {
        NavigationView {    // ナビゲーションバーを表示する為に必要
            List {
                ForEach(items) { item in
                    Text("Item at \\(item.timestamp!, formatter: itemFormatter)")
                }
                .onDelete(perform: deleteItems)
            }
            .toolbar {
                /// ナビゲーションバーの左にEditボタンを配置
                ToolbarItem(placement: .navigationBarLeading) {
                    EditButton()
                }

                /// ナビゲーションバーの右に+ボタン配置
                ToolbarItem(placement: .navigationBarTrailing) {
                    Button(action: addItem) {
                        Label("Add Item", systemImage: "plus")
                    }
                }
            }
        }
    }

尚、今回はこちらの記事を参考にさせていただきました。

他にも標準テンプレート自体の説明も詳しく載っているのでとても参考になるかと思います!

【SwiftUI】Core Dataの使い方:標準テンプレートを読み解く

コメント

タイトルとURLをコピーしました