如何解决如何从weatherManager 获取这个urlString?
我有包含两个参数的 urlString,我想将它从天气管理器文件中拉到weatherViewController。但是有一个问题是weatherViewController 找不到这个urlString
从此(让 urlString: String = ("(baseURL)&q=(cityName)"))
struct WeatherManager {
let baseURL = "http://api.openweathermap.org/data/2.5/forecast?appid=b55174293bc04b637df2b71c2888e9fd&units=metric"
func urlString(cityName: String) {
let urlString: String = ("\(baseURL)&q=\(cityName)")
print(urlString)
performRequest(urlString: urlString)
}
func performRequest(urlString: String,completion: ((_ data: Data?,_ response: URLResponse?,_ error: Error?) -> (Void))? = nil) {
if let url = URL(string: urlString) {
let session = URLSession(configuration: .default)
let task: URLSessionDataTask
if let completion = completion {
task = session.dataTask(with: url,completionHandler: completion)
} else {
task = session.dataTask(with: url)
}
task.resume()
}
}
}
对于这个 weatherManager.performRequest(urlString)...
class WeatherViewController: UIViewController,UITextFieldDelegate {
var weatherManager = WeatherManager()
@objc func searchpressed(sender: UIButton) {
searchField?.endEditing(true)
guard let text = searchField?.text else {
print("no value")
return
}
print(text)
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
searchField?.endEditing(true)
return true
}
func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
if textField.text != "" {
return true
} else {
textField.placeholder = "Type something else"
return false
}
}
public func textFieldDidEndEditing(_ textField: UITextField) {
if let city = searchField!.text {
weatherManager.urlString(cityName: city)
}
searchField?.text = ""
}
@objc func locationButtonAction(sender: UIButton) {
weatherManager.performRequest(urlString: self){ [weak self] (data,response,error) in
guard let self = self else { return }
if error != nil {
print(error!)
return
}
guard let response = response as? HTTPURLResponse else { return }
if response.statusCode == 200 {
if let safeData = data {
let decoder = JSONDecoder()
do {
let responseModel = try decoder.decode(ResponseModel.self,from: safeData)
let city = responseModel.city
self.weatherItems = responseModel.list
dispatchQueue.main.async {
self.cityLabel.text = city.name
self.tableView.reloadData()
}
} catch {
print(error)
}
}
}
}
}
错误是:在范围内找不到'urlString'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。