Xcode Swift 2 天气问题

问题描述 投票:0回答: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)
        }
    }
}

};

昨天我运行了应用程序,今天早上我刚刚收到新的错误消息,甚至不允许编译代码。他们说:

“缺少“[电子邮件受保护]”启动图像”和“命令/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftcode”。

ios swift xcode swift2 xcode7
1个回答
0
投票

您需要在 info.plist 文件中添加一些内容:

enter image description here

这是因为您尝试从中获取数据的 URL 链接不是安全链接,因此将其添加到您

info.plist
允许您访问该链接。只需转到您的
info.plist
并右键单击并选择“添加行”,然后添加您在上图中看到的内容即可。

此外,从

getWeatherData
方法中删除
viewDidLoad
函数,因为您不需要它,因为按下按钮时会调用它。

此外,我注意到您的

setLabels
函数中的一个标签未正确设置,因为它们都尝试设置
cityTempLabel
标签,因此请将另一个标签更新为
cityNameLabel

构建并运行,它应该可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.