天气图标未显示在天气应用程序的图像视图中

Posted

技术标签:

【中文标题】天气图标未显示在天气应用程序的图像视图中【英文标题】:weather icon not displaying in imageview in weather pp 【发布时间】:2021-03-24 11:11:06 【问题描述】:

我正在使用 openweathermap api 开发天气应用程序,我已经获取并设置了所有数据,还获取了字符串中的图像名称,但天气图标未显示在 imageview 中。

import UIKit
import Alamofire

class WeatherViewModel
    
    var modelWeather2 = [MyWeatherData]()
    
    weak var vc: ViewController?
    
    func getWeather() 
        
        AF.request("http://api.openweathermap.org/data/2.5/weather?q="+(vc?.cityTextField.text)!+"&units=metric&appid=88236c7916643a06e2cd64d56f4e5077", method: .get).response
            
            response in
            
//            debugPrint(response)
            if let data = response.data
            
                do
                    let apiResponse = try JSONDecoder().decode(MyWeatherData.self, from: data)
                    self.modelWeather2.append(apiResponse)

                    debugPrint(apiResponse)
                    DispatchQueue.main.async 
                        
                        self.vc?.tempLabel.text = String(apiResponse.main.temp)
                        self.vc?.titleLabel.text = apiResponse.weather[0].main
                        self.vc?.descriptionLabel.text = apiResponse.weather[0].description
                        let iconUrl = "http://openweathermap.org/img/wn/\(apiResponse.weather[0].icon).png"
                        self.vc?.weatherImage.image = UIImage(named: iconUrl)
                    
                catch let error
                    print(error.localizedDescription)
                
            
        
        
        
    

这是我的代码

【问题讨论】:

UIImage(named:) 用于存储在应用程序包中的图像。它不适用于远程图像的 url。 如何从 url 设置 您可以通过简单的搜索找到许多教程。这是一个hackingwithswift.com/example-code/uikit/… @AliAhmed 如果你打印iconUrl 它会打印什么? 我已经解决了错误 【参考方案1】:

您可以像下面发布的那样使用原始解决方案

extension UIImageView 
    func downloadImage(for url: String) 
        DispatchQueue.global(qos: .default).async 
            if let url = URL(string: url), let data = try? Data(contentsOf: url), let image = UIImage(data: data) 
                self.image = image
            
        
    

最后你可以把它当作

self.vc?.weatherImage.downloadImage(for: "YOUR_URL_HERE")

同样,解决方案非常原始,除了简单地下载图像之外,不提供缓存功能或任何其他功能

【讨论】:

什么是自我。图片和什么是=图片都一样我很困惑 它是UIImageView的扩展,imageView有一个名为image的属性,因此self.image,=image是下载的图像,如果你看到上面写的一系列if let I,它有@987654325 @ 这就像它在 swift 中一样简单,如果您是 swift 新手,我建议您阅读 doc/swift 手册 我得到这个错误变量在它自己的初始值中使用 2 to things, 1.您发布的代码不会导致错误“变量在其自己的初始值内使用” 2.错误与您的问题“天气图标未显示在 imageview 中”无关天气pp“如果有错误,添加正确的错误,行号和与错误相关的所有代码,你设置图像的方式也是错误的,因此我编写了代码来下载图像,毕竟这是你原来的问题跨度> 变量在其自己的初始值中使用此错误是您未在我的代码中提供的扩展方法

以上是关于天气图标未显示在天气应用程序的图像视图中的主要内容,如果未能解决你的问题,请参考以下文章

如何在雅虎天气预报的每一天加载天气图标?

我在哪里可以找到免费的天气图标? [关闭]

如何显示openweathermap天气图标

天气应用 (JSON) 数据未显示在文本视图中

如何在 Recyclerview 中显示图像 - Recyclerview 图像显示错误

百科知识 天气图标示例