SwiftUI将变量从视图传递到类

SwiftUI将变量从视图传递到类,swift,swiftui,Swift,Swiftui,使用NavigationLink(目的地:ProductDetailsView(displayedProduct\u id:Detaliprodus.id))我将Detaliprodus.id从mainview传递到ProductDetailsView MyProductDetailsView外观: struct ProductDetailsView: View { var displayedProduct_id = "" @ObservedObject var disp

使用
NavigationLink(目的地:ProductDetailsView(displayedProduct\u id:Detaliprodus.id))
我将
Detaliprodus.id
mainview
传递到
ProductDetailsView

My
ProductDetailsView
外观:

struct ProductDetailsView: View {

var displayedProduct_id = ""

@ObservedObject var displayedProduct = ReadProductDetail(productID: "9gioS1HgMl")

var body: some View {
      
       VStack{
           Image(uiImage: displayedProduct.poza_principala)
           Text(displayedProduct.tip_vanzare)
           Text(displayedProduct.titlu_produs)
           etc.}
我的问题是如何使用
displayedProduct\u id
来显示产品详细信息,而不是使用硬编码的值(我现在已经有了)

阅读我在课堂上提供的信息:

class ReadProductDetail: ObservableObject {

@Published var poza_principala : UIImage = UIImage(imageLiteralResourceName: "logo")
@Published var tip_vanzare      = ""
@Published var titlu_produs     = ""
@Published var pret             = ""
@Published var marime           = ""
@Published var gen              = ""
@Published var descriere        = ""
@Published var user             = ""
@Published var telefon          = ""

@Published var rezultat = [DisplayedProductDetailes]()

var productID = ""

init(productID: String) {
    
    let query = PFQuery(className:"Produse")
    
    query.includeKey("poza_principala")
    query.includeKey("tip_vanzare")
    query.includeKey("marime")
    query.includeKey("gen")
    query.includeKey("user")

    query.getObjectInBackground(withId: productID) { (object, error) in
    
      if error == nil && object != nil {
        
        let poza_p_main1 = object!["poza_principala"] as! PFObject
        let poza_p_main2 = poza_p_main1["poza_principala"] as! PFFileObject
        
        poza_p_main2.getDataInBackground { (imageData: Data?, error: Error?) in
            if let error = error {
                print(error.localizedDescription)
            } else if let imageData = imageData {
                self.poza_principala = UIImage(data:imageData)!
            }
        }
        
        let tip_vanzare_main    = object!["tip_vanzare"] as! PFObject
        self.tip_vanzare        = tip_vanzare_main["tip_vanzare"] as? String ?? "N/A"
        self.titlu_produs       = object!["titlu_produs"] as? String ?? "N/A"
        self.pret               = object!["pret"] as? String ?? "N/A"
        let marime_main         = object!["marime"] as! PFObject
        self.marime             = marime_main["marime"] as? String ?? "N/A"
        let gen_main            = object!["gen"] as! PFObject
        self.gen                = gen_main["gen"] as? String ?? "N/A"
        self.descriere          = object!["descriere"] as? String ?? "N/A"
        let user_main           = object!["user"] as! PFObject
        self.user               = user_main["username"] as? String ?? "N/A"
        self.telefon            = object!["telefon"] as? String ?? "N/A"
                    
      } else {
        self.titlu_produs = "Indisponibil"
      }
    }
    
}//end init() }

我尝试过使用
@State
@Binding
,但出现了一些错误。

以下内容应该适合您

struct ProductDetailsView: View {

   @ObservedObject var displayedProduct: ReadProductDetail

   init(displayedProduct_id: String) {
      self.displayedProduct = ReadProductDetail(productID: displayedProduct_id)
   }

   var body: some View {
      // ... other code
   }
}

以下内容应该适合您

struct ProductDetailsView: View {

   @ObservedObject var displayedProduct: ReadProductDetail

   init(displayedProduct_id: String) {
      self.displayedProduct = ReadProductDetail(productID: displayedProduct_id)
   }

   var body: some View {
      // ... other code
   }
}