6

我想做的是在运行时将图像分配给 ui 元素(想想 Winamp 风格),但我不知道如何在不存储到磁盘的情况下从 zip 中读取。或者如何将每个图像分配给一个 ui 元素

我正在使用可可和目标 c 的 mac

4

2 回答 2

5

使用objective-c zip(iOS/Mac zlib 包装器)

然后你可以这样做:

ZipFile *unzipFile= [[ZipFile alloc] initWithFileName:@"test.zip" mode:ZipFileModeUnzip];
[unzipFile goToFirstFileInZip];

ZipReadStream *read= [unzipFile readCurrentFileInZip];
NSMutableData *data= [[NSMutableData alloc] initWithLength:256];
int bytesRead= [read readDataWithBuffer:data];

[read finishedReading];
于 2012-04-19T16:48:11.273 回答
1

zipzap版本

ZZArchive* archive = [ZZArchive archiveWithContentsOfURL:[NSURL fileURLWithPath:@"test.zip"]];
NSData* data = [archive.entries[0] newDataWithError:nil];

或者,如果您正在寻找特定条目:

ZZArchive* archive = [ZZArchive archiveWithContentsOfURL:[NSURL fileURLWithPath:@"test.zip"]];
NSData* data = nil;
for (ZZArchiveEntry* entry in archive.entries)
  if ([entry.fileName isEqualToString:@"test.txt"])
  {
    data = [entry newDataWithError:nil];
    break;
  }

扫描这样的文件非常理想。扫描仅使用 zip 中央目录,直到-[entry newDataWithError:].

于 2014-08-22T00:55:49.117 回答