【问题标题】:Unzip files in swift快速解压文件
【发布时间】:2014-10-30 13:23:50
【问题描述】:

如何快速解压缩文件?在 Objective-C 中,我使用了 SSZipArchive,我喜欢它。如下面的代码所示。我怀疑如果我决定保留 SSZipArchive,I will have to bridge an Objective-C file to my Swift file. 是否有任何更新的第三方,或者更好的 Apple-Documentation 可以在 Swift 中解压缩文件?

NSString *zipPath = [self.globalFileStrucure stringByAppendingPathComponent:@"zipfile.zip"];

[data writeToFile:zipPath options:0 error:&error];

BOOL unZipped = 0;

unZipped = [SSZipArchive unzipFileAtPath:zipPath toDestination:self.globalFileStrucure];

【问题讨论】:

标签: ios objective-c swift unzip ssziparchive


【解决方案1】:

Swift 2(更新):

所以它对我有用,没有错误:

  1. 在此处下载/克隆库:ssziparchive
  2. 将目录“SSZipArchive”复制到您的项目(拖放)并选择“创建组”
  3. 将库包含到您的项目 Swift-ObjC Bridge (xxxx-Bridge-Header.h)

    #import "SSZipArchive.h"

  4. 链接库“libz.tbd” - iOS 的一部分

    (项目 -> 构建阶段 -> 将二进制文件与库链接 -> +)

  5. 准备好压缩/解压缩

【讨论】:

  • 我正在使用 cocoapod 添加 SSZipArchive,但我在所有 gzip 引用中都遇到了错误。我将 libz.dylib 添加到 pod 和项目的目标中,但仍然有错误。有任何想法吗? @screenworker
  • 对于 Xcode 7 和 Swift 2 & Mac 应用,导入 2 个库,libz.tbd 和 dylib1.o
【解决方案2】:

如果您使用的是 UIKit 或 AppKit 中的任何一个,那么您已经在使用 Swift-ObjC 桥接器。不用担心,只需使用您熟悉和喜爱的库即可!

let zipPath = globalFileStrucure.stringByAppendingPathComponent("zipfile.zip")
data.writeToFile(zipPath, options: nil, error: &error)

let unZipped = SSZipArchive.unzipFileAtPath(zipPath, toDestination: globalFileStrucure)

【讨论】:

    【解决方案3】:

    我发现 WPZipArchive 使用 Cocoapods 更易于使用和安装。有兴趣的朋友可以阅读以下指南:

    1) 从 Mac Application/Utilities 文件夹或 Launchpad 中打开 Terminal.app

    2) 在终端输入sudo gem update --system 以确保您的 Ruby 是最新的

    3) 输入sudo gem install cocoapods 安装cocoapods(此过程可能需要几分钟,等待显示已完成)

    4) 输入pod setup 设置cocoapods(从这里开始,您不需要使用sudo 命令,只使用pod

    5) 启动 Xcode 并创建一个新项目(如果您没有创建现有项目)。如果您创建了 Xcode 项目,请跳过此步骤。

    6) 退出 Xcode 程序。是的,关闭你的项目并退出 Xcode 程序

    7) 回到终端输入cd Path/To/Folder/Containing/YourProject把这个Path/To/Folder/Containing/YourProject替换成你自己的目录路径

    8) 输入pod init

    9) 输入open -a Xcode Podfile 使用Xcode 程序打开podfile。默认 Podfile 如下所示:

    platform :osx, '10.10'
    use_frameworks!
    
    target 'myprojectname' do
    pod 'WPZipArchive', '0.0.1'
    end
    

    platform :osx, '10.10' 指定最小部署目标,您可以更改为任何您喜欢的。

    10) 保存并关闭 Podfile(也关闭 Xcode)

    11) 返回终端并输入pod install 这是安装 WPZipArchive,这将需要几分钟。

    12) 您已完成 WPZipArchive 的安装。

    启动 Xcode 项目:

    重要提示:从现在开始,您必须使用 .xcworkspace 而不是 .xcodeproj

    启动您的 Xcode 项目

    在 ViewController.swift 或任何您想使用 zip 或 unzip 方法的 .swift 文件上,只需添加 import WPZipArchive,如下所示:

    import Cocoa
    import WPZipArchive
    

    要压缩文件,调用方法如下:

    WPZipArchive.createZipFileAtPath(zipPath, withContentsOfDirectory: sampleDataPath)
    

    要解压文件,调用方法如下:

    WPZipArchive.unzipFileAtPath(zipPath, toDestination: unzipPath)
    

    就是这样,它工作且易于实施。

    享受压缩和解压缩

    【讨论】:

      【解决方案4】:

      @screenworker (Unome) 询问了一连串错误,这些错误都参考了 libz 框架。我遇到了类似的事情。链接步骤产生了有关“符号”的错误,例如“_crc32”。所有这些符号都可以在 libz.tbd 存根中找到。

      在这种情况下的问题是我错误地将 libz.tbd 引用添加到了测试目标,而不是为项目本身命名的目标。这可以通过转到构建阶段显示来检查:

      • 在项目导航器(左侧面板)中单击您的项目名称
      • 在编辑器中,单击“构建阶段”选项卡。
      • 在 Build Phases 显示中,在 Project Navigator 旁边的窄列中查找标题为 Targets 的列表
      • 单击与您的项目相同的目标(例如 myProject 而不是 myProjectTest 或 myProjectUITest)
      • 如果单击“Link Binary With Libraries”旁边的箭头,您应该会看到库列表 - 其中应该包括 libz。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多