无法使用UIDocumentPicker导入页面和数字文档

时间:2015-03-12 09:23:48

标签: objective-c file ios8 file-import uidocumentpickervc

我正在开发一个能够存储云文档的应用程序。 此应用可以选择使用新的UIDocumentPickerViewController从其他应用导入数据。 一切正常,我能够显示选择器视图控制器。 这是我用来导入文件的代码:

- (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentAtURL:(NSURL *)url {



if (controller.documentPickerMode == UIDocumentPickerModeImport) {

    dispatch_async(dispatch_get_main_queue(), ^{



        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder

         NSString*  path=[NSString stringWithFormat:@"%@/MyHandyTap/%@/%@",documentsDirectory,self.cartella,[url lastPathComponent]];

        BOOL startAccessingWorked = [url startAccessingSecurityScopedResource];
        NSURL *ubiquityURL = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];

        __block NSData *data;

        NSFileCoordinator *fileCoordinator = [[NSFileCoordinator alloc] init];
        NSError *error;
        [fileCoordinator coordinateReadingItemAtURL:url options:0 error:&error byAccessor:^(NSURL *newURL) {

            data = [NSData dataWithContentsOfURL:newURL];

            [data writeToFile:path atomically:YES];

        }];
        [url stopAccessingSecurityScopedResource];

    }
}

使用此代码,我可以导入许多不同的文件格式(.pdf,.txt,.rtf,.doc等)但是如果我尝试从iCloud导入文件.pages或.numbers文件,则调用[NSData dataWithContentsOfURL:newURL]返回null

是否可以让用户导入这些类型的文件?

我已经重新列出了此处列出的文档https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/FileProvider.html#//apple_ref/doc/uid/TP40014214-CH18-SW2 我已经下载了此处列出的示例:https://developer.apple.com/devcenter/download.action?path=/wwdc_2014/wwdc_2014_sample_code/newboxanintroductiontoiclouddocumentenhancementsinios8.0.zip 但是我无法弄清楚如何解决这个问题。

提前感谢您的帮助

安德烈

1 个答案:

答案 0 :(得分:3)

即使我没有测试它,但是你可能会遇到问题,因为.pages或.numbers类型的文件不是单个文件,而是捆绑包。因此,您无法使用-dataWithContentsOfURL:阅读它们。

您是否使用-copyItemAtURL:toURL:error:NSFileManager)检查了复制?