【问题标题】:Is there an unrar library out there for iOS?是否有适用于 iOS 的 unrar 库?
【发布时间】:2011-12-08 19:07:49
【问题描述】:

我想在我的 iphone 应用程序中包含一个 unrar 文件选项。

我已经尝试过https://github.com/ararog/Unrar4iOS,但是这个库不完整(一些功能还没有实现,比如 -(BOOL) unrarFileTo:(NSString*)path overWrite:(BOOL)overwrite)

谢谢。

【问题讨论】:

  • 为了将来参考,如果您考虑“语言和 API”与“操作系统”相比,您将获得更好的搜索结果,否则您将错过在 iOS 或Mac OS X。从“unrar objective-c”开始以获得最广泛的结果。
  • 请搜索网站。这已经被问了好六次了。
  • 显然我在问这个问题之前进行了广泛的搜索。
  • Alex:很明显?很明显?我们都不知道您的浏览历史,您也没有说明您查看过的位置以及为什么可以找到的结果对您不起作用。事实上,你显然已经尝试过一些对你不起作用的东西(你对 omz 的回应),但你没有提到它。对不起,但是关于你做了什么或没做什么,没有什么“明显”的。最好对自己的问题的清晰度负责,这样您就可以使它们变得更好(并帮助我们为您提供更好的答案)。
  • @JoshuaNozzi:我更新了我的问题

标签: iphone ios cocoa ipad unrar


【解决方案1】:

我最终使用了 Unrar4ios,但我需要自己编写实际提取 rar 文件的函数:

-(BOOL) unrarFileTo:(NSString*)path overWrite:(BOOL)overwrite {

    int RHCode = 0, PFCode = 0;

    [self _unrarOpenFile:filename mode:RAR_OM_EXTRACT];

    while ((RHCode = RARReadHeaderEx(_rarFile, header)) == 0) {

        if ((PFCode = RARProcessFile(_rarFile, RAR_EXTRACT, (char *)[path UTF8String], NULL)) != 0) {
            [self _unrarCloseFile];
            return NO;
        }

    }

    [self _unrarCloseFile];


    return YES;
}

【讨论】:

  • 考虑在github上提交一个pull request,来帮助原项目。
  • @Moshe:很高兴。问题是我对 github 不太熟悉 - 请给我一个简短的解释(或链接)如何做到这一点?
  • 我自己不是 GitHub 专业人士,但本质上,您需要分叉存储库、进行更改、推送提交,然后请求拉取。如果我找到一个链接,我会抓住一个。
  • @pacoflaco 似乎该框架不是“全球性的”,它只能用于模拟器而不是设备......我没有时间深入研究如何在 xcode 4 中创建一个框架,所以我所做的是创建一个 Unrar4ios 文件的静态库(.a 文件),然后将其添加到我的主项目(带有标题)中。当然,在这里我必须创建一个“通用”静态库,所以我使用了来自这里的运行脚本stackoverflow.com/questions/3520977/…(亚当的回答)......
  • @Alex1987 我试过但出现错误“使用未声明的标识符'存档'”,你能上传你的静态库吗?
【解决方案2】:

这可能会有所帮助:https://github.com/ararog/Unrar4iOS

【讨论】:

  • 我已经尝试过这个库 - 但它有些不完整。如果你看源码你会发现有些函数没有实现,最重要的是 -(BOOL) unrarFileTo:(NSString*)path overWrite:(BOOL)overwrite.
  • @Alex:你看过它附带的示例项目吗?特别是 ./UnrarExample/Classes/UnrarExampleViewController.mm 的 -decompress: 方法?似乎工作正常。
  • @JoshuaNozzi 它之所以有效,是因为他使用了另一种称为 extractStream 的方法,它基本上会返回一个 NSData 对象。当我们谈论图像时(例如在项目中),它可能会起作用 - 但在涉及更大的文件时则不会。
  • ...这正是您应该在原始问题中提出的内容,因此我们不会做诸如花时间搜索您已经尝试过的建议库之类的事情来查找不起作用的方法因为你已经知道的原因。 ;-)
【解决方案3】:

unrarlib 库应该适合您,因为 Objective C 是 C 的超集。

【讨论】:

  • 你真的试过了吗?这是一个非常古老的项目(2002-2004),不支持 rar 3.x 档案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 2012-02-28
  • 2015-03-30
  • 2019-12-16
  • 2014-12-20
相关资源
最近更新 更多