我需要通过电子邮件/ iTunes /其他方式(例如消息,AirDrop)共享.zip文件。我已经可以通过电子邮件和iTunes发送压缩文件,但是当我尝试使用UIActivityViewController发送zip文件时,它不会显示任何文件。
这是代码:
-(void) sendAllToApp {
NSString *dpath=NSTemporaryDirectory();
NSString *zipfile=[dpath stringByAppendingPathComponent:[NSString stringWithFormat:@"All_Reports_of_Project_%@.zip",project.displayName]];
[SSZipArchive createZipFileAtPath:zipfile withFilesAtPaths:zippedURL];//zipfile is the path that I store zip file data,zippedURL is the paths of files t.
NSData *zipData=[[NSFileManager defaultManager]contentsAtPath:zipFile];
NSURL *url =[NSURL fileURLWithPath:zipfile];
[zipData writeToURL:url atomically:NO];
if(zipData != nil) {
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[url] applicationActivities:nil];
activityViewController.excludedActivityTypes = @[UIActivityTypePrint];
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
activityViewController.popoverPresentationController.sourceView = self.navigationController.view;
activityViewController.popoverPresentationController.sourceRect = CGRectMake(self.navigationController.view.bounds.size.width/2, self.navigationController.view.bounds.size.height/4, 0, 0);
}
[self.navigationController presentViewController:activityViewController animated:true completion:nil];
activityViewController.completionWithItemsHandler = ^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError) {
// When completed flag is YES, user performed specific activity
};
[self clearTmpDirectory];
}
else {
[self showError];
[self clearTmpDirectory];
}
}
我将项目设置为@[url]
和@[zipData]
。
使用网址时,我无法使用AirDrop。
使用zip数据时,我在MacBook中获得了一个.data文件。如果我将.data文件更改为.zip,它将成为我想要分享的正确文件。
那我怎样才能正确分享.zip文件?
答案 0 :(得分:0)
我们遇到了同样的问题。唯一对我们有用的修复方法是将.zip转换为.tar文件,该文件可以使用包含其路径的NSURL进行共享。