问题描述
我有包含两个参数的 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 (将#修改为@)