8

StoreKit が IAP コンテンツ パッケージをダウンロードすると、次のような NSURL が返されます。

file://localhost/private/var/mobile/Applications/45EF2B3A-3CAB-5A44-4B4A-631A122A4299/Library/Caches/BA32BC55-55DD-3AA4-B4AC-C2A456622229.zip/

StoreKit は一度ダウンロードしたコンテンツ パッケージを解凍すると主張しているすべてのソースにもかかわらず、私は ZIP を渡されます。この ZIP には、コンテンツ パッケージのファイル構造が含まれている可能性があります。しかし、これを解凍するにはどうすればよいですか?

4

2 に答える 2

31

Swift 言語で作業している場合は、Zip Foundationを使用してください。使いやすく、zip ファイルを解凍するための最高の迅速なライブラリの 1 つです。

ジップ:

let fileManager = FileManager()
let currentWorkingPath = fileManager.currentDirectoryPath
var sourceURL = URL(fileURLWithPath: currentWorkingPath)
sourceURL.appendPathComponent("file.txt")
var destinationURL = URL(fileURLWithPath: currentWorkingPath)
destinationURL.appendPathComponent("archive.zip")
do {
    try fileManager.zipItem(at: sourceURL, to: destinationURL)
} catch {
    print("Creation of ZIP archive failed with error:\(error)")
}

解凍:

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)")
}

Objective-C を使用している場合は、 SSZipArchiveが最適です。

これを使用して解凍できます

NSArray  *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *outputPath = [documentsDirectory stringByAppendingPathComponent:@"/ImagesFolder"];

NSString *zipPath = Your zip file path;

[SSZipArchive unzipFileAtPath:zipPath toDestination:outputPath delegate:self];

お役に立てば幸いです。

于 2013-04-19T13:20:26.083 に答える
9

iPhone用のファイルを圧縮/解凍するための優れたサードパーティツールがあります

https://github.com/soffes/ssziparchive

使い方はとても簡単です。それが役立つことを願っています!!

編集:

URLを取得し、zipをダウンロードして解凍する、私が作成したクイックメソッド

-(void)downloadAndUnzip : (NSString *)sURL_p : (NSString *)sFolderName_p
{
    dispatch_queue_t q = dispatch_get_global_queue(0, 0);
    dispatch_queue_t main = dispatch_get_main_queue();
    dispatch_async(q, ^{
        //Path info
        NSURL *url = [NSURL URLWithString:sURL_p];
        NSData *data = [NSData  dataWithContentsOfURL:url];
        NSString *fileName = [[url path] lastPathComponent];
        NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:fileName];
        [data writeToFile:filePath atomically:YES];
        dispatch_async(main, ^


                 {
                       //Write To
                       NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
                       NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
                       NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:sFolderName_p];

                       [SSZipArchive unzipFileAtPath:filePath toDestination:dataPath];

                   });
});

}
于 2013-04-19T12:56:07.147 に答える