2017-07-19 2 views
0

秒の時間を更新していない私はここにSingeltonを使用してUITextFieldの値を渡していますが、私のSingeltonクラスです:Swift3 - シングルトンUITextFieldの値を共有する

class CityName { 
    static var sharedInstance = CityName() 
    private init() {} 
    var cityName:String! 
} 

そして、ここでは、私は、この値に

let WEATHER_URL = BASE_URL + CityName.sharedInstance.cityName + API_Key 
を使用しています、私のクラス定数であります

@IBAction func searchButtonTapped(_ sender: Any) { 
    CityName.sharedInstance.cityName = cityNameTextField.text! 
    print(CityName.sharedInstance.cityName) 
    networkConnection.getWeatherDetails { 
     self.currentTempLabel.text = String(self.networkConnection.currentTemp) 
     self.minTempLabel.text = String(self.networkConnection.minTemp) 
     self.maxtTempLabel.text = String(self.networkConnection.maxTemp) 
    } 
} 

、私のネットワーク内:私は値を渡すために、ボタンを使用しています私のビューコントローラで

クラスURL接続を作成しています

func getWeatherDetails(completed: @escaping DownloadComplete) { 
    print(WEATHER_URL) 
    Alamofire.request(WEATHER_URL).responseJSON { response in 
     let result = response.result 
     if let dict = result.value as? Dictionary<String, AnyObject> { 
      if let main = dict["main"] as? Dictionary<String, AnyObject> {     
       if let currentTemperature = main["temp"] as? Double { 
        let kelvinToFarenheitPreDivision = (currentTemperature * (9/5) - 459.67) 
        let kelvinToFarenheit = Double(round(10 * kelvinToFarenheitPreDivision/10)) 
        self._currentTemp = kelvinToFarenheit 
        print(self._currentTemp) 
       } 
      } 
     } 
     completed() 
    } 
} 

このコードは、テキストフィールドに最初に値を入力すると正常に動作します。しかし、テキストフィールドに新しい値を追加するとURLが更新されません。

答えて

2

URLはどこでも更新されていません。それをvar WEATHER_URL = BASE_URL + CityName.sharedInstance.cityName + API_Keyで変更可能に変更し、searchButtonTapped()機能で更新してください。

@IBAction func searchButtonTapped(_ sender: Any) { 
    CityName.sharedInstance.cityName = cityNameTextField.text! 
    print(CityName.sharedInstance.cityName) 
    WEATHER_URL = BASE_URL + CityName.sharedInstance.cityName + API_Key 
    networkConnection.getWeatherDetails { 
     self.currentTempLabel.text = String(self.networkConnection.currentTemp) 
     self.minTempLabel.text = String(self.networkConnection.minTemp) 
     self.maxtTempLabel.text = String(self.networkConnection.maxTemp) 
    } 
} 

また、あなたはあなたの変数(weatherUrl、baseUrlに、APIKEY)のそれぞれについて、スウィフトの命名規則を使用する必要があります。

関連する問題