2016-07-05 4 views
2

Swift에서 게임을 만들었지 만 내 웹 사이트에서 .zip 파일을 다운로드하고 게임에서 콘텐츠 (이미지)를 사용해야합니다. 사실, .zip 파일을 다운로드하여 문서에 저장하고 파일을 같은 문서 폴더에 압축을 풀어야합니다.Swift로 압축 해제

나는 marmelroy의 Zip, iOS 9 압축 모듈과 tidwall의 DeflateSwift를 시도했지만 이들 중 아무 것도 시도하지 못했습니다. iOS 8과 호환되면 좋을 수도 있습니다.

답변

1

나는 SSZipArchive와 브리지 헤더와 함께 작동있어 : & 프로젝트에 SSZipArchive 디렉토리를 삭제

  1. 드래그
  2. 와 파일 header.h가이 -Bridging {PROJECT-MODULE-NAME}을 만들기 코드 생성 - -> 목표 - C 브리징 헤더 라인 수입 "SSZipArchive.h"빌드 설정에서
  3. 는 스위프트 컴파일러에서 브리지 헤더를 드래그합니다.
  4. Swift 코드에서 SSZipArchive를 사용하십시오.
+0

5. 위의 4 단계에서 링커 오류를받은 후에 libz를 대상에 추가하십시오. – DiggyJohn

3

방금 ​​Minizip이라는 라이브러리를 찾았습니다. 사용해보기

Zip framework을 사용하여 Swift을 사용하여 파일을 압축 해제 할 수 있습니다. 간단히 minizip에없는 작품, 당신은 ZipArchive로 갈 수 있다면 Swift

샘플 코드

do { 
    let filePath = NSBundle.mainBundle().URLForResource("file", withExtension: "zip")! 
    let unzipDirectory = try Zip.quickUnzipFile(filePath) // Unzip 
    let zipFilePath = try Zip.quickZipFiles([filePath], fileName: "archive") // Zip 
} 
catch { 
    print("Something went wrong") 
} 

작성, 그것은

+0

예 처음 시도했지만 시도했을 때 minizip 모듈을 찾을 수 없었습니다 –

+0

ZipArchive를 사용하면 현재까지 다른 프레임 워크를 사용할 수 없습니다. –

+0

SSZipArchive를 사용하면 클래스를 찾을 수 없습니다 같은 이름. –

-2

당신은

을 사용할 수 있습니다-C 목표 신속한뿐만에 기록되지 아니
let unzipDirectory= try Zip.quickUnzipFile(filePath) //to unZip your folder. 
  • 더 많은 도움이 필요하면 website.

  • 저에게 도움이되었습니다.

나는이 문제가 해결되기를 바랍니다.

+1

이것은 타사 라이브러리를 사용하는 것과 관련이 있습니다. 사용하지 않는 경우이 코드는 컴파일 타임 오류를 생성합니다. 사용 된 라이브러리가 무엇인지 제안하는 것이 좋습니다. –

2

저는 최근에 ZIP 보관 파일을 만들고, 읽고 업데이트 할 수있는 Swift 네이티브 프레임 워크를 발표했습니다 : ZIP Foundation.
뛰어난 압축 성능을 위해 내부적으로 libcompression을 사용합니다.

try fileManager.unzipItem(at: sourceURL, to: destinationURL) 

일부 컨텍스트 전체 예는 다음과 같이 보일 것이다 : :이 README on GitHub 더 많은 정보를 포함

let fileManager = FileManager() 
let currentWorkingPath = fileManager.currentDirectoryPath 
var sourceURL = URL(fileURLWithPath: currentWorkingPath) 
sourceURL.appendPathComponent("archive.zip") 
var destinationURL = URL(fileURLWithPath: currentWorkingPath) 
destinationURL.appendPathComponent("directory") 
do { 
    try fileManager.createDirectory(at: destinationURL, withIntermediateDirectories: true, attributes: nil) 
    try fileManager.unzipItem(at: sourceURL, to: destinationURL) 
} catch { 
    print("Extraction of ZIP archive failed with error:\(error)") 
} 

파일을 압축 풀기

는 기본적으로 하나 개의 라인입니다. 모든 공개 메서드에는 Xcode 빠른 도움말을 통해 사용할 수있는 전체 설명서가 있습니다.

또한 성능 특성 here에 대한 블로그 글을 썼습니다.