LoginSignup
shoutaokuyama
@shoutaokuyama

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!

SwiftUI ViewからViewへのデータのやり取りができません

解決したいこと

データを次のViewに渡して使えるようにしたいです

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

Missing argument for parameter 'userData' in call

Cannot convert value of type '[String : Any].Type' to expected argument type '[String : Any]'

Instance method 'appendInterpolation(_:formatter:)' requires that 'Any?' inherit from 'NSObject'

makeProfileView

import SwiftUI
import Firebase
import FirebaseFirestore

struct UserData {
    let name: String
    let age: String
    let gender: String
    let email: String

    init(dic: [String: Any]){
        self.name = dic["name"]! as! String
        self.age = dic["age"]! as! String
        self.gender = dic["gender"]! as! String
        self.email = dic["email"]! as! String
    }  
}

struct makeProfileView: View {
    @State var userData = [String: Any]()
    func getProfileData(){
        let user = Auth.auth().currentUser
        let uid = user!.uid
        let userRef = Firestore.firestore().collection("users").document(uid)

        userRef.getDocument{ (snapshot, err) in
            if err != nil {
                print("エラー")
            }else {
                guard let data = snapshot?.data() else {return}
                let userData = UserData.init(dic: data)
                print(userData)
                print(userData.name)
                self.isActive = true
            }
        }
    }

    var body: some View {
        NavigationView{
            NavigationLink(destination: profileView(userData: userData), isActive: $isActive){
            }
        }
    }
}

profileView

import SwiftUI
import Firebase
import FirebaseFirestore

struct profileView: View{
    let userData: [String: Any]

    var body: some View {
        VStac{
           Text("\(userData["name"])")
//           Instance method 'appendInterpolation(_:formatter:)' requires that 'Any?' inherit from 'NSObject'
        }
    }

struct profileView_Previews: PreviewProvider {
    static var previews: some View {
        profileView()
//        Missing argument for parameter 'userData' in call 
//        ↑の Fix を使って  profileView(userData: [String : Any]) にすると
//        Cannot convert value of type '[String : Any].Type' to expected argument type '[String : Any]'
    }
}

自分で試したこと

structを使って次のViewでデータを渡そうと調べながら試したができず、NavigationLinkを使ってみたができませんでした

0

No Answers yet.

Your answer might help someone💌