У меня есть функция getZipCodefromURL
, которая извлекает данные из службы метеоданных, анализирует json и сортирует информацию в моем array
. В моем приложении у меня есть текстовое поле, кнопка и метки, настроенные так, чтобы пользователь мог ввести свой почтовый индекс в текстовое поле и нажать кнопку, которая обновит этикетки информацией о погоде в своей области.Не удается получить заполненный массив из функции
Я думаю, что проблема, с которой я сталкиваюсь, связана с тем, как моя функция настроена или как я ее называю. В моей функции enterButton
я хочу получить свой заполненный массив от getZipCodeinURL
, однако, когда я его вызываю, он возвращает пустой, и я не могу его проиндексировать. До сих пор это то, что у меня есть:
var array: [String] = []
func getZipCodeinURL(zipCode: String) -> NSArray{
let urlPath = "http://api.openweathermap.org/data/2.5/weather?zip=\(zipCode),us&units=imperial"
let url: NSURL = NSURL(string: urlPath)!
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(url, completionHandler: {data, response, error -> Void in
if error != nil {
// If there is an error in the web request, print it to the console
println(error.localizedDescription)
return
}
var err: NSError?
var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary
if err != nil {
// If there is an error parsing JSON, print it to the console
println("JSON Error \(err!.localizedDescription)")
return
}
let json = JSON(jsonResult)
var temp = json["main"]["temp"].stringValue
var humidity = json["main"]["humidity"].stringValue
var pressure = json["main"]["pressure"].stringValue
self.array = [temp, humidity, pressure]
})
task.resume()
return array
}
@IBOutlet weak var pressureLabel: UILabel!
@IBOutlet weak var humidityLabel: UILabel!
@IBOutlet weak var tempLabel: UILabel!
@IBAction func enterButton(sender: AnyObject) {
var zipCode = zipcodeText.text
var weatherArray: NSArray = getZipCodeinURL(zipCode)
var temperature: AnyObject = weatherArray[0]
}
Кто-нибудь знает, как я могу правильно извлечь мою населенную array
из моей функции в мою enterButton
функции?
Вам необходимо научиться асинхронным вызовам с акцентом на интернет-вызовы. – zaph