微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从weatherManager 获取这个urlString?

如何解决如何从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 举报,一经查实,本站将立刻删除。