如何从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 (将#修改为@)