Ios Can';无法在swiftUI中显示url中的图像

Ios Can';无法在swiftUI中显示url中的图像,ios,swift,swiftui,Ios,Swift,Swiftui,我是swiftUI新手,尝试创建一个简单的应用程序,用于显示来自图像API的图像 我从url获取图像,但无法在Imageview中显示,我有一个按钮,当我按下它时,它调用api并返回单个图像url,我不知道问题出在哪里 import SwiftUI struct ContentView: View { @ObservedObject var NetworkManager = Network() var body: some View { ZSt

我是swiftUI新手,尝试创建一个简单的应用程序,用于显示来自图像API的图像 我从url获取图像,但无法在Imageview中显示,我有一个按钮,当我按下它时,它调用api并返回单个图像url,我不知道问题出在哪里

import SwiftUI

struct ContentView: View {
    @ObservedObject var NetworkManager = Network()
    var body: some View {
        
        ZStack{
            VStack{
                ImageDog(UIDogImage:self.NetworkManager.Dog ?? UIImage(systemName: "photo")!)
            

            Button(action: {
              
                self.NetworkManager.ApiCaller()

                
            }) {
                Text("GET DOG").font(.system(size: 20)).foregroundColor(Color(#colorLiteral(red: 0.5272222161, green: 0.6115953326, blue: 0.6786056161, alpha: 1))).padding()
                }.background(Color(#colorLiteral(red: 0.5401973128, green: 0.9296894073, blue: 0.6209766269, alpha: 1))).cornerRadius(20)
            }
                
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

struct ImageDog: View {
   @State var UIDogImage:UIImage
    var body: some View {
        Image(uiImage:UIDogImage).resizable().frame(width: 200, height: 200, alignment: .center).padding()
     
    }
}

网络调用者返回图像url,我将其更改为image,然后将其传递给Dog属性image

import SwiftUI
class Network:ObservableObject {
    @Published var Dog:UIImage?
    //  This Api return random dog images every time you request it
    // https://dog.ceo/api/breeds/image/random
    
    
     // MARK: Network Caller
    func ApiCaller(){ // used URLSession for Network requesting and Codable For parsing JSON
       
    
        // 1 :: create URL
        if let DogURL = URL(string: "https://dog.ceo/api/breeds/image/random") {
        
        // 2 :: create URLSession
            let session = URLSession(configuration: .default)
        
        // 3 :: give Sesion Task
            let Dogtask = session.dataTask(with: DogURL) { (data, response, error) in
                if error == nil {
                    if let DogData = data {
                    do {
                        let DogResponseResult = try JSONDecoder().decode(DogResponse.self, from: DogData)
                        print(DogResponseResult.message!)
                        if let data = try? Data(contentsOf: URL(string: DogResponseResult.message!)!){
                            DispatchQueue.main.async {
                                self.Dog = UIImage(data: data)
                            }
                        }                    
                        
                    }catch{
                        print(error)
                    }
                    }
            }
            }
        
        // 4 :: Start Session Task
            Dogtask.resume() // Send the request here
        }
        
    }
  
}


您未正确使用
@ObservedObject
。查看链接的Q&A,了解如何在视图中声明
网络
。只需从UIdogImage和app中删除@state即可解决此错误。您使用的
@ObservedObject
。查看链接的Q&A,了解如何在视图中声明
网络
。只需从UIdogImage中删除@state即可解决此错误,应用程序运行良好