Как в Swift получить данные из URLSession?

Рейтинг: 2Ответов: 1Опубликовано: 09.11.2014

Например, имеется такой Swift код:

 let task = NSURLSession.sharedSession().dataTaskWithURL(url, completionHandler: {data, response, error -> Void in
            var dann = NSString(data: data, encoding: NSUTF8StringEncoding)!
            self.str = dann
    })
task.resume()

Я хочу передать полученные данные в переменную в классе.
str - переменная в классе.
Строка "self.str = dann" не передает ничего. Как правильно сделать?

Ответы

▲ 1

dataTaskWithURL() имеет два аргумента

  1. url - url полученный с сервера
  2. completionHandler - функция, которая имеет 3 аргумента: data: NSData, response: NSURLresponce, error: NSError.

В аргументе data как раз и содержатся твои данные с сервера, которые ты запросил.

Но эти данные возвращаются в формате JSON (то есть, чтобы работать с ними, тебе надо их распарсить).

Тебе надо сделать примерно следующее:

var dann = []
 let task = NSURLSession.sharedSession().dataTaskWithURL(url, completionHandler: {data, response, error -> Void in
            let jsonResult = try! NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments) as! NSDictionary
            if let result: NSArray = jsonResult["results"] as? NSArray
            {
                self.dann = result
                })
    })