Swift我获得对温度标签的可选(3.48),并且每个单元格中的表视图单元格中的信息相同

问题描述 投票:0回答:1
我在模拟器中获得了Optional(3.48),不知道如何在没有“ Option()”值的情况下获取此值。在tableview中,每个单元格都相同,但我每天只需要5个单元格就可以提供不同的信息。用json解析的数据。我提供了代码,希望任何人都能帮助我。我将很高兴为您提供帮助。

import UIKit import Foundation class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { @IBOutlet weak var cityNameLabel: UILabel! @IBOutlet weak var temperatureLabel: UILabel! @IBOutlet weak var weatherNowLabel: UILabel! @IBOutlet weak var dailyWeatherTableView: UITableView! var responseModel: WeatherForecast? var degreeSymbol = "º" override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. currentWeatherRequest() dailyWeatherTableView.delegate = self dailyWeatherTableView.dataSource = self updateView() //self.dailyWeatherTableView.automatic } func currentWeatherRequest() { let session = URLSession.shared let weatherURL = URL(string: "http://api.openweathermap.org/data/2.5/forecast?q=cityname?&units=metric&APPID=")! let dataTask = session.dataTask(with: weatherURL) { (data: Data?,response: URLResponse?,error: Error?) in if let error = error { print("Error:\n\(error)") } else { if let jsonData = data { do { let dataString = String(data: jsonData, encoding: String.Encoding.utf8) print("Daily weather data:\n\(dataString!)") let decoder = JSONDecoder() self.responseModel = try decoder.decode(WeatherForecast.self, from: jsonData) DispatchQueue.main.async { self.cityNameLabel.text = self.responseModel?.city.name // self.temperatureLabel.text = String(describing: self.responseModel?.list[0].main.feelsLike) self.weatherNowLabel.text = (self.responseModel?.list[0].weather[0].main).map { $0.rawValue } self.dailyWeatherTableView.reloadData() self.updateView() } } catch let error { print("Error: \(error)") } }else { print("Error: did not receive data") } } } dataTask.resume() } public func updateView(){ self.temperatureLabel.text = String(describing: responseModel?.list[0].main.temp) } public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return responseModel?.list.count ?? 5 } public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { guard let cell = tableView.dequeueReusableCell(withIdentifier: "FullDayWeatherCell", for: indexPath) as? DailyWeatherViewCell else { return UITableViewCell() } cell.minMaxTempLabel.text = "\(String(describing: responseModel?.list[0].main.tempMin))\(self.degreeSymbol) - \(String(describing: responseModel?.list[0].main.tempMax))\(self.degreeSymbol)" cell.weatherLabel.text = (self.responseModel?.list[0].weather[0].main).map { $0.rawValue } return cell } private func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { return UITableView.automaticDimension }

}
swift xcode tableview
1个回答
0
投票
[temp是可以具有或不具有值的Optional

let list = responseModel?.list[0] if let temp = list.main.temp { // temp is an Int } else { // No value }

© www.soinside.com 2019 - 2024. All rights reserved.