[英]Swift - Use of unresolved identifier
我在同一函数中创建所有变量。 但是在函数的最后,即使它是在同一函数中创建的,我也无法达到该常数。
当我最后写“ self.resultLabel.text = weather”时,Xcode向我显示了一个错误的未解析标识符“ weather”的使用
我知道如何解决。 我需要在task方法启动后立即启动“天气”并将其设置为“”,然后我应该在函数中更改其值,但是即使我不这样做并且我在if闭包中创建它,也不应我可以在相同功能范围内达到目标吗?
我不明白为什么它会一直给我这个错误。
func findWeather() {
var errorStatus = false
city = (cityField.text?.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()))!
let url = NSURL(string: "http://www.weather-forecast.com/locations/" + city.stringByReplacingOccurrencesOfString(" ", withString: "-") + "/forecasts/latest")!
let task = NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) -> Void in
if let content = data {
let urlContent = NSString(data: content, encoding: NSUTF8StringEncoding) as NSString!
let weatherContent = urlContent.componentsSeparatedByString("<span class=\"phrase\">")
if weatherContent.count > 1 {
let weather = weatherContent[1].componentsSeparatedByString("</span>")[0].stringByReplacingOccurrencesOfString("°", withString: "˚")
} else {
var weather = ""
errorStatus = true
}
} else {
var weather = ""
errorStatus = true
}
dispatch_async(dispatch_get_main_queue(), { () -> Void in
if errorStatus == true {
self.showError()
} else {
self.resultLabel.text = weather // I get error: use of unresolved identifier 'weather'
}
})
}
task?.resume()
您正在定义太多新的变量weather
,这些变量只能在它们所在的花括号之间局部可见。
定义weather
的最佳位置是在task
关闭的开始,并且必须删除该变量随后出现的所有var
或let
声明。
这里是关键部分:
let task = NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) -> Void in
var weather = ""
if let content = data {
let urlContent = NSString(data: content, encoding: NSUTF8StringEncoding) as NSString!
let weatherContent = urlContent.componentsSeparatedByString("<span class=\"phrase\">")
if weatherContent.count > 1 {
weather = weatherContent[1].componentsSeparatedByString("</span>")[0].stringByReplacingOccurrencesOfString("°", withString: "˚")
} else {
errorStatus = true
}
} else {
errorStatus = true
}
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.