複数のエラーが出ているのでその理由と快活方法を知りたいです。
ここに質問の内容を詳しく書いてください。
教本に沿ってコードを入力中ですが複数のエラー表示で先に進みません。
発生している問題・エラーメッセージ
Cannot convert value of type 'Binding<Subject>' to expected condition type 'Bool' Referencing subscript 'subscript(dynamicMember:)' requires wrapper 'EnvironmentObject<ShareData>.Wrapper' Value of type 'ShareData' has no dynamic member 'isOn' using key path from root type 'ShareData'
該当のソースコード
class ShareData: ObservableObject {//プロトコルを指定 @Published var yesNo = false @Published var num = 1 } 上記は別ファイルで作成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ import SwiftUI struct ContentView: View { //共有オブジェクトを指定する @EnvironmentObject var setData: ShareData //シートが開いている状態 @State var isShow: Bool = false var body: some View { VStack { VStack(alignment: .leading, spacing: 5) { ↓この部分にエラーが出ています Text("設定:(setData.isOn ? "ON" : "OFF")") Text("評価:" + String(repeating: "★", count: setData.num)) }.font(.title2) //シートを表示するボタン Button("[設定を変更する]") { isShow = true } .padding() .sheet(isPresented: $isShow) { //シートをつくる SettingView(isPresented: $isShow) } } } }
試したこと
コードの確認
エラーメッセージの検索
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
setData.isOn でエラーになるのは setData が ShareData 型で、isOn を持ってないからですね。
ところで、教本って具体的に何という本 (の第何版) ですか?
貴重なヒントをありがとうございます。
@Published var yesNo = falseから
@published var isOn = falseで解消しましたが
ShareDataにisOnを含ませるというイメージでしょうか?
また、別のアプローチで、
isOnをyesNoのかえることでもあるのでしょうか?
yesNo を他のことに使ってるならそれとは別に isOn を追加することになるし、使ってないなら yesNo を isOn に変えても良いと思いますが、いずれにせよプログラムの設計によります。
ありがとうございました。
視野が広がりました。
何度も回答感謝いたします。