2013-05-28 111 views
2

我正在构建一个从zip文件下载一堆数据的应用程序。我下载了zip文件,但想要提取PDF文件的目录。我正在使用SSZipArchive但我的代码无法正常工作。我想我没有正确解压缩它。SSZiparchive简单的unarchiving

我的代码:

[data writeToFile:filePath atomically:YES]; 

// Unzipping 
NSString *destinationPath = [documentsDir stringByAppendingPathComponent:@"catalogus"];; 
[SSZipArchive unzipFileAtPath:filePath toDestination:destinationPath]; 
[[NSUserDefaults standardUserDefaults] setValue:destinationPath forKey:@"catalogus"]; 

而在另一个视图 - 控制我想打开PDF

NSString *bestand = [[NSUserDefaults standardUserDefaults] valueForKey:@"catalogus"]; 
ReaderDocument *testdocument = [ReaderDocument withDocumentFilePath:bestand password:phrase]; 

当我下载的PDF直接(不拉上全部)我的代码工作正常。

+0

您解压缩文件的文件夹和保存的文件夹路径NSUserDefaults的,但随后您再次检索此文件夹路径以使用ReaderDocument打开。 ReaderDocument是不是要求pdf文件路径而不是文件夹路径? –

+0

请检查此:-http://stackoverflow.com/questions/11333399/download-and-unzip-file-in-ios –

+0

是ReaderDocument是要求PDF文件路径,而不是文件夹路径。当我将文件名添加到路径时,它也不会打开。 我添加了代码: NSString * pdfbestand = [destinationPath stringByAppendingString:@“catalogus.pdf”]; [[NSUserDefaults standardUserDefaults] setValue:pdfbestand forKey:@“catalogus”]; 仍然不能正常工作 –

回答

4

使用此解压:

- (void)Unzipping { 

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

    NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"FILENAME.zip"]; 
    NSString *zipPath = filePath; 

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

} 

,并使用此方法从目录中获取PDF:

-(NSData *)FetchPDF 
{ 
    NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString* documentsDirectory = [paths objectAtIndex:0]; 
    NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"/PDFFolder"]; 
    NSString *workSpacePath = [dataPath stringByAppendingPathComponent:@"your_filename.pdf"]; 
    NSData *pdfData = [NSData dataWithContentsOfFile:workSpacePath]; 

    return pdfData; 
} 
+0

感谢您的工作,我的noob错误。我忘了/在文件夹前面... –

+0

嗯..最受欢迎:-) –