@Leshich

Swift/Objective-C. Как конвертировать NSData в zip, а затем распаковать в папку проекта?

let url: NSURL = NSURL(string: "http://.../data.zip")!
let sharedSession = NSURLSession.sharedSession()
let downloadTask:NSURLSessionDownloadTask = sharedSession.downloadTaskWithURL(url, completionHandler: { (location: <#NSURL!#>, response: <#NSURLResponse!#>, error:<#NSError!#>) -> Void in nil
  let dataObject = NSData(contentsOfURL: location)
  // ???
})
downloadTask.resume()


В коде получил с помощью url zip в виде NSData. Как дальше его вернуть в zip? Затем мне нужно будет распаковать его и положить содержимое файла в сам проект. Там должна лежать база данных, которую буду хранить локально.

Видел отрезки кода на Obj-C в ответах вроде этого, но не совсем понял как использовать это мне.
  • Вопрос задан
  • 2924 просмотра
Решения вопроса 1
@stringName
Студент
Библиотека SSZipArchive, нужно, помимо самой библиотеки, импортировать еще libz.dylib
import Foundation

class DownloadManager: NSObject, NSURLSessionDownloadDelegate {
    
    let backgroundSession: NSURLSession!
    
    override init() {
        super.init()
        let config = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("YOUR.COM.NAME") // Вообще любой уникальный идентификатор, e.g. com.toster.zip.BackgroundSession
        backgroundSession = NSURLSession(configuration: config, delegate: self, delegateQueue: nil)
    }
    
    func downloadWithURL(url: NSURL) {
        let task = backgroundSession.downloadTaskWithURL(url)
        task.resume()
    }
    
    func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didFinishDownloadingToURL location: NSURL) {
        let destination = NSHomeDirectory().stringByAppendingString("/Desktop/unzip/")
        SSZipArchive.unzipFileAtPath(location.path!, toDestination: destination)
    }
    
}

let manager = DownloadManager()
manager.downloadWithURL(NSURL(string: "http://.../data.zip")!)

Распакованный архив будет в /Desktop/unzip/
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Cassar
Ответ написан
Комментировать
@Leshich Автор вопроса
Хорошо. Библиотек я таких уже миллион нашел, вот только как их в Свифт код включить и вызвать не совсем понимаю. Привязал вроде с помощью .h файла, но дальше не понимаю.
Привязал это
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы