【发布时间】:2018-08-09 23:03:10
【问题描述】:
我试图在单击按钮(GoButton)后调用一大块代码来运行,我尝试过这样做,但它只是崩溃,我有时也会收到我的按钮等于 nil 的错误。有什么建议吗?如果没有按钮,下面的所有代码都可以正常工作,我希望它在按下后运行。另外,我是快速编程的新手,如果这真的很容易,我很抱歉。谢谢
代码如下:
override func viewDidLoad() {
super.viewDidLoad()
func GoButton(_ sender: Any) {
guard let APIUrl = URL(string: "https://api.openweathermap.org/data/2.5/weather?q=Crowland&appid=***APIKEY***&units=Metric") else { return }
URLSession.shared.dataTask(with: APIUrl) { data, response, error in
guard let data = data else { return }
let decoder = JSONDecoder()
do {
let weatherData = try decoder.decode(MyWeather.self, from: data)
if (self.MainLabel != nil)
{
if let gmain = weatherData.weather?.description {
print(gmain)
DispatchQueue.main.async {
self.MainLabel.text! = "Current Weather in: " + String (gmain)
}
}
}
if (self.LocationLabel != nil)
{
if let gmain = weatherData.name {
print(gmain)
DispatchQueue.main.async {
self.LocationLabel.text! = "Current Weather in: " + String (gmain)
}
}
}
if (self.HumidityLabel != nil)
{
if let ghumidity = weatherData.main?.humidity
{
print(ghumidity, "THIS IS HUMIDITY")
DispatchQueue.main.async {
self.HumidityLabel.text! = String (ghumidity)
}
}
}
if (self.WindLabel != nil)
{
if let gspeed = weatherData.wind?.speed {
print(gspeed, "THIS IS THE SPEED")
DispatchQueue.main.async {
self.WindLabel.text! = String(gspeed) + " mph"
}
}
}
if (self.TempLabel != nil)
{
if let ggtemp = weatherData.main?.temp {
print(ggtemp, "THIS IS THE TEMP")
DispatchQueue.main.async {
self.TempLabel.text! = String (ggtemp) + " c"
}
}
}
} catch {
print(error.localizedDescription)
}
}.resume()
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
【问题讨论】:
-
你是如何初始化你的按钮的?
-
在哪一行发生了崩溃,或者请用崩溃结果更新您的问题
标签: ios swift xcode button uibutton