Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Swift UI 「データ受け渡し」についての質問

解決したいこと

SwiftUI の学習をしております。
現在データの受け渡し部分を、学習しております。
どなたか、下記エラーの「原因」を教えてください。

発生している問題・エラー

Cannot convert value of type 'MyData.Type' to expected argument type 'MyData'

該当するソースコード(それぞれ別ファイル)

import SwiftUI

@main
struct PAISEN_devApp: App {
    var body: some Scene {
        WindowGroup {
            study(data: MyData)
        }
    }
}
import SwiftUI


struct study: View {
    @ObservedObject var data: MyData

    var body: some View {
        VStack {
            Text("\(data.score)")
            Button(action: {
                self.data.score += 1
            }) {
                Text("カウントアップ")
            }
        }
    }
}
import Foundation

class MyData: ObservableObject {
    @Published var score = 0
}

わからないポイント

・なぜ「MyData.Type」と認識されている?
エラーコード的に、「MyData.Type」から「Mydata」に直せと言っているように見える。
「Mydata.Type」と記述はどこにもしていなはずだが。。?

以上、よろしくお願いいたします。

0

2Answer

定義以外で MyData と書いたときは MyData.Type 型の値になります。
構造体の使い方を確認してみてください。

1Like

インスタンスを渡していないことが原因ですね。

  import SwiftUI

  @main
  struct PAISEN_devApp: App {
      var body: some Scene {
          WindowGroup {
-             study(data: MyData)
+             study(data: MyData())
          }
      }
  }

引数に型を指定する場合はT.selfと記述しないといけないので、今回の間違はシンタックスエラーの類な気がします。
エラーメッセージは親切が先回りしすぎて不親切かもしれませんね。

1Like

Your answer might help someone💌