일단 특정 로컬 네트워크에 연결되면 활동 표시기가 표시되고 이미지의 zip 파일 다운로드가 시작됩니다. 이미지가 다운로드되면 파일을 압축 해제하고 다음 View Controller로 segue를 수행합니다. 나는 모든 기능을 작동 시키지만 기능이 끝났을 때를 감시하는 방법을 모른다. 내 Donloader 클래스는 다음과 같습니다downloadTask가 완료된 후 segue 수행
class Downloader {
let documentsUrl: URL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first as URL!
required init() {
self.load()
}
func load() {
// Create destination URL
let destinationFileUrl = documentsUrl.appendingPathComponent("Images.zip")
//Create URL to the source file you want to download
let fileURL = URL(string: "http://127.0.0.1:4567/download")//FIXME for production
//Create Session
let sessionConfig = URLSessionConfiguration.default
let session = URLSession(configuration: sessionConfig)
let request = URLRequest(url:fileURL!)
let task = session.downloadTask(with: request) { (tempLocalUrl, response, error) in
if let tempLocalUrl = tempLocalUrl, error == nil {
// Success
if let statusCode = (response as? HTTPURLResponse)?.statusCode {
print("Successfully downloaded. Status code: \(statusCode)")
}
do {
try FileManager.default.copyItem(at: tempLocalUrl, to: destinationFileUrl)
} catch (let writeError) {
print("Error creating a file \(destinationFileUrl) : \(writeError)")
}
} else {
print("Error took place while downloading a file. Error description: %@", (error?.localizedDescription)! as String);
}
}
task.resume()
}
}
을 내 파일 클래스 내 내 압축 해제 기능은 다음과 같습니다
func unZip() {
let zipFileURL = documentsURL?.appendingPathComponent("Images.zip")
SSZipArchive.unzipFile(atPath: (zipFileURL?.path)!, toDestination: (documentsURL?.path)!)
var directoryContents = [URL]()
do {
// Get the directory contents urls (including subfolders urls)
directoryContents = try fileManager.contentsOfDirectory(at: documentsURL!, includingPropertiesForKeys: nil, options: [])
} catch let error as NSError {
print(error.localizedDescription)
}
let pngFiles = directoryContents.filter{ $0.pathExtension == "png" }//FIXME change file types if needed
imageNamesArray = pngFiles.map{ $0.deletingPathExtension().lastPathComponent }
}
나는 폐쇄를 살펴 했어하지만 그들을 호출하는 방법을 이해하지 않습니다 클래스 또는 다른 ViewController 외부에서. 어떤 도움이라도 대단히 감사 할 것입니다.
폐쇄 값을 반환 하시겠습니까? –
아니요, 다운로드를 기다린 다음 다운로드의 압축을 푼 다음 연결을 수행하십시오. – Wazza
로드 기능을 성공적으로 다운로드 한 곳에서 압축 해제 함수를 호출하고 성공적으로 압축을 풀어 내용을 세그먼트로 처리 한 후 압축을 해제하십시오. 어디서 붙어 있니? –