2016-07-29 4 views
1
import UIKit 

class ViewController: UIViewController { 

@IBOutlet weak var cityNameTextField: UITextField! 

@IBOutlet weak var cityNameLabel: UILabel! 

@IBOutlet weak var cityTempLabel: UILabel! 

@IBAction func getDataButtonClicked(sender: AnyObject) { 

    getWeatherData("http://api.openweathermap.org/data/2.5/weather?q=\(cityNameTextField.text)&APPID=6de03a1d1554874e7594a89fad719dd0") 
} 


override func viewDidLoad() { 
    super.viewDidLoad() 
    getWeatherData("http://api.openweathermap.org/data/2.5/weather?q=London&APPID=6de03a1d1554874e7594a89fad719dd0") 
    // Do any additional setup after loading the view, typically from a nib.  
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated.   
} 

func getWeatherData(urlString: String) { 
    let url = NSURL(string: urlString) 

    let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in 
     dispatch_async(dispatch_get_main_queue(), { 
      self.setLabels(data!) 
     }) 
    } 
    task.resume()   
} 


var jsonData: AnyObject? 

func setLabels(weatherData: NSData) { 


    do { 

     self.jsonData = try NSJSONSerialization.JSONObjectWithData(weatherData, options: []) as! NSDictionary 

    } catch { 
     //error handle here 

    } 

    if let name = jsonData!["name"] as? String { 

     cityTempLabel.text = "\(name)" 

    } 



    if let main = jsonData!["main"] as? NSDictionary { 
     if let temp = main["temp"] as? Double { 
      cityTempLabel.text = String(format: "%.1f", temp) 
     } 
    } 
} 

}; 

昨日私はアプリを実行していましたが、今朝はコードをコンパイルできないような新しいエラーメッセージが表示されています。彼らは「Missing」と言っています。[email protected]「画像を起動します。」と「コマンド/アプリケーション/ Xcode.app /コンテンツ/デベロッパー/ツールチェーン/XcodeDefault.xctoolchain/usr/bin/swiftcode」。前もって感謝します。Xcode Swift 2天気アプリの問題

+0

コマンド/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftcが終了コード1で失敗しました –

+0

プロジェクトをクリーニングしてみてください。また、このリンクをチェックしましたか? - http://stackoverflow.com/questions/30848208/new-warnings-in-ios-9 –

答えて

0

あなたのInfo.plistファイルに何かを追加する必要があります。

enter image description here

あなたからデータを取得しようとしているURLのリンクが保護されたリンクではありませんので、それはそうあなたにこれを追加すること、だinfo.plistそのリンクにアクセスすることができます。 info.plistに移動し、右クリックして[行を追加]を選択し、上記の画像に表示されているものを正確に追加します。

また、getWeatherData関数は、ボタンを押したときに呼び出すときには不要なので、viewDidLoadメソッドから削除してください。

setLabels機能でラベルが正しく設定されていないことがわかりました。両方ともcityTempLabelラベルを設定しようとしています。もう1つをcityNameLabelに更新します。

ビルドして実行しても問題はありません。