如何将数据传递到 swiftui 视图并访问它
How to pass data into swiftui view and access it
我正在尝试将数据传递到 swiftui 视图以在初始化时显示,但我无法让它工作。
这是将数据传递到我的 'MarkerInfoWindow.swift' 视图的代码:
func mapView(_ mapView: GMSMapView, markerInfoContents marker: GMSMarker) -> UIView? {
print("Showing marker infowindow")
print("marker.userData: \(marker.userData)")
let mUserData = marker.userData as? [String:String]
print("mUserData?['name']", (mUserData?["name"]) ?? "mUserData[name] was nil")
let mInfoWindow = UIHostingController(rootView: MarkerInfoWindow(placedata: mUserData!))
return mInfoWindow.view
}
这是我的 'MarkerInfoWindow.swift' 视图的代码:
struct PlaceDataStruct {
var name : String
var place_id : String
}
struct MarkerInfoWindow: View {
var placedata: [PlaceDataStruct]
var body: some View {
//Here is where i keep getting errors regardless if i use this method or dot notation
Text(placedata["name"])
}
}
我不确定我是否错误地实现了我的 PlaceDataStruct。
有谁知道我做错了什么,以便每次初始化视图时都能显示正确的数据?
您 MarkerInfoWindow
需要一个结构数组,但您传递的数据是一个字典,格式为 [String: String]
您应该更新 MarkerInfoWindow
以接受字典。这是一个如何做到这一点的例子。
struct MarkerInfoWindow: View {
var placedata: [String: String] // update to be dictionary
var body: some View {
Text(placedata["name", default: ""]) // use correct notation for accessing dictionary
}
}
在将数据传递给 MarkerInfoWindow
之前,如果您的意图是正确的,您还可以强制解包数据。但请注意,如果您的数据不存在,那么它会使您的应用程序崩溃。
我正在尝试将数据传递到 swiftui 视图以在初始化时显示,但我无法让它工作。
这是将数据传递到我的 'MarkerInfoWindow.swift' 视图的代码:
func mapView(_ mapView: GMSMapView, markerInfoContents marker: GMSMarker) -> UIView? {
print("Showing marker infowindow")
print("marker.userData: \(marker.userData)")
let mUserData = marker.userData as? [String:String]
print("mUserData?['name']", (mUserData?["name"]) ?? "mUserData[name] was nil")
let mInfoWindow = UIHostingController(rootView: MarkerInfoWindow(placedata: mUserData!))
return mInfoWindow.view
}
这是我的 'MarkerInfoWindow.swift' 视图的代码:
struct PlaceDataStruct {
var name : String
var place_id : String
}
struct MarkerInfoWindow: View {
var placedata: [PlaceDataStruct]
var body: some View {
//Here is where i keep getting errors regardless if i use this method or dot notation
Text(placedata["name"])
}
}
我不确定我是否错误地实现了我的 PlaceDataStruct。 有谁知道我做错了什么,以便每次初始化视图时都能显示正确的数据?
您 MarkerInfoWindow
需要一个结构数组,但您传递的数据是一个字典,格式为 [String: String]
您应该更新 MarkerInfoWindow
以接受字典。这是一个如何做到这一点的例子。
struct MarkerInfoWindow: View {
var placedata: [String: String] // update to be dictionary
var body: some View {
Text(placedata["name", default: ""]) // use correct notation for accessing dictionary
}
}
在将数据传递给 MarkerInfoWindow
之前,如果您的意图是正确的,您还可以强制解包数据。但请注意,如果您的数据不存在,那么它会使您的应用程序崩溃。