質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

2509閲覧

エラーの理由と解決方法を知りたいです。

DarumaD

総合スコア0

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2021/12/07 14:16

複数のエラーが出ているのでその理由と快活方法を知りたいです。

ここに質問の内容を詳しく書いてください。
教本に沿ってコードを入力中ですが複数のエラー表示で先に進みません。

発生している問題・エラーメッセージ

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/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2021/12/07 18:41

setData.isOn でエラーになるのは setData が ShareData 型で、isOn を持ってないからですね。 ところで、教本って具体的に何という本 (の第何版) ですか?
DarumaD

2021/12/08 02:03

貴重なヒントをありがとうございます。 @Published var yesNo = falseから @published var isOn = falseで解消しましたが ShareDataにisOnを含ませるというイメージでしょうか? また、別のアプローチで、 isOnをyesNoのかえることでもあるのでしょうか?
hoshi-takanori

2021/12/08 04:40

yesNo を他のことに使ってるならそれとは別に isOn を追加することになるし、使ってないなら yesNo を isOn に変えても良いと思いますが、いずれにせよプログラムの設計によります。
DarumaD

2021/12/08 10:03

ありがとうございました。 視野が広がりました。 何度も回答感謝いたします。
guest

回答1

0

Text("設定:(setData.isOn ? "ON" : "OFF")")

文字列がおかしくないですか

Text( "設定:(setData.isOn ? " ON " : " OFF ")" )
こうなりますが、本当に意図してこうしてるんでしょうか

投稿2021/12/07 14:28

y_waiwai

総合スコア87800

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DarumaD

2021/12/07 15:10

ご回答ありがとうございます。 無知で申し訳ないですが 文字列によるエラーなのでしょうか?
hoshi-takanori

2021/12/07 17:55

Swift では文字列の中に (式) と書くとその式の値を文字列にして埋め込むことができます。ので、そこはおかしくないはず。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問