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