2012-07-25 44 views
5

Tôi có một ứng dụng iPhone mà tôi đã phát triển bằng ARC. Tôi có một thư mục chứa một đống hình ảnh trong thư mục tài liệu của tôi mà tôi cần phải nén và gửi e-mail. Dự án của tôi sử dụng ARC.Tạo một tệp ZIP từ một thư mục trong thư mục tài liệu - Mục tiêu C (ARC)

Có ai có bất kỳ mã mẫu/liên kết nào đến tài nguyên hữu ích cho tôi không?

Tôi đã cào xung quanh trực tuyến và những gì tôi có thể tìm thấy không tương thích với ARC - ngay cả khi xác nhận quyền sở hữu.

+6

Bạn biết rằng bạn có thể tắt ARC theo từng tệp, đúng không? Vì vậy, nếu bạn có mã không phải ARC bạn thích, bạn vẫn có thể sử dụng nó trong một dự án ARC. ARC không phải là tất cả hoặc không có gì; đó là tùy chọn trình biên dịch cho mỗi tệp. http://stackoverflow.com/questions/6646052/how-can-i-disable-arc-for-a-single-file-in-a-project –

+0

Và để làm rõ thêm, nếu bạn có dự án Xcode xây dựng một thư viện Objective-C, và nó không phải ARC, bạn có thể bao gồm dự án đó trong dự án của bạn và sử dụng thư viện, bất kể ARC của nó hay không. –

+0

Ồ, không, tôi không biết điều đó, cổ vũ. –

Trả lời

8

Tải xuống và kéo Mục tiêu-Zip, MiniZip và ZLib kéo vào dự án của bạn từ liên kết này http://code.google.com/p/objective-zip/downloads/list (Mục tiêu-zip). nhập khẩu các tập tin: ZipFile.h, ZipException.h, FileInZipInfo.h, ZipWriteStream.h, ZipReadStream.h, zlib.h

Sử dụng mã này. Vui lòng xem bên dưới:

NSString *stringPath1 = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]]; 
    NSString *FileName=[stringPath1 stringByAppendingPathComponent:@"Your file name"]; 


    NSString *stringPath=[stringPath1 stringByAppendingPathComponent:[@"Your file name" stringByAppendingFormat:@".zip"]]; 
    NSArray *files = [[NSFileManager defaultManager]contentsOfDirectoryAtPath:FileName error:&error]; 
    ZipFile *zipFile = [[ZipFile alloc]initWithFileName:stringPath mode:ZipFileModeCreate]; 

    for(int i = 0;i<files.count;i++){ 

     id myArrayElement = [files objectAtIndex:i]; 
     NSLog(@"add %@", myArrayElement); 

     NSString *path = [FileName stringByAppendingPathComponent:myArrayElement]; 
     NSDictionary *attributes = [[NSFileManager defaultManager]attributesOfItemAtPath:path error:&error]; 
     NSDate *Date = [attributes objectForKey:NSFileCreationDate]; 

     ZipWriteStream *streem = [zipFile writeFileInZipWithName:myArrayElement fileDate:Date compressionLevel:ZipCompressionLevelBest]; 
     NSData *data = [NSData dataWithContentsOfFile:path]; 
     [streem writeData:data]; 
     [streem finishedWriting]; 
    } 

    [zipFile close]; 
+0

xin lỗi nhưng liên kết bạn cung cấp đã chết ngay bây giờ. – mcy

+0

Tôi xin lỗi nhưng đã hơn 1 năm trước ... –

+2

Tìm thấy một liên kết làm việc với dự án này: https://github.com/flyingdolphinstudio/Objective-Zip –

Các vấn đề liên quan