Так что мне сложно что-то понять. Вот что я понимаю о NSURSession:
-
Как правило, у меня есть 2 варианта (насколько я знаю) DataTask (ex dataTaskWithRequest) И DownloadTask (ex DownloadTaskWithRequest) - использование метода делегата, или использовать обработчик завершения, Cant сделать оба. Мне удалось получить DATA с помощью dataTaskWithRequest следующим образом:
let request = NSMutableURLRequest(URL: dataSourceURL!) request.HTTPMethod = "POST" let postString = "lastid=\(id)" request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding) let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in if error != nil { println("error=\(error)") return } if data != nil { println("works") //Handle data } //println("response = \(response)") } task.resume()
Он отлично работает. Проблема в том, что мне нужно ЗАГРУЗИТЬ данные на диск, а не только в память (я загружаю изображения). Таким образом, я пробовал то же самое с DownloadTaskWithRequest + его обработчиком завершения, и я заметил, что параметры, которые он принимает, одинаковы, ожидайте первый, который является NSURL и в DataTaskWithRequest NSDatastrong > , поэтому он упрощает работу. e.X
let task2 = NSURLSession.sharedSession().downloadTaskWithRequest(request, completionHandler: { (location : NSURL!, response : NSURLResponse!, error : NSError?) -> Void in
if error != nil {
return
}
//How do i get the data??
})
task2.resume()
Мой вопрос таков: Я знаю, что могу извлечь DATA из местоположения (NSURL), используя:
var data = NSData(contentsOfURL: location)
1) Будет ли contentsOfURL сделать другой запрос, чтобы получить эти данные или что он работает локально? Если он снова отправляет запрос, как я могу его избежать?
2) Правильно ли это (я знаю, что могу использовать методы делегата, я не предпочитаю)?
3) Как я могу сохранить данные, которые я загрузил (после ответов на вопросы номер 1 и 2) локально, и, если необходимо, получить к нему доступ?
Спасибо, ребята! Извините за вопрос newibie, я действительно забочусь об эффективности - Спасибо!