Я создаю все переменные в пределах одной и той же функции. Но в конце функции я не могу достичь постоянной, даже если она была создана в той же функции.Swift - использование неразрешенного идентификатора
Когда я пишу «self.resultLabel.text = погода» в конце, Xcode показывает мне использовать ошибки «погоды» неразрешенного идентификатора
Я знаю, как это исправить. Мне нужно инициировать «погоду» сразу после запуска метода задачи и установить его в «», а затем я должен изменить его значение в функции, но даже если я этого не сделаю, и я создам его в закрытии 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()
Move 'вар погода = ""', чтобы перед 'если let'. Это совершенно верно. –