我正在开发一个应用程序,提供存储云文档的功能。
此应用程序可以选择使用新的 UIDocumentPickerViewController
从其他应用程序导入数据。
一切正常,我能够显示选择器 View Controller 。
这是我用来导入文件的代码:
- (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 但是我不知道如何解决这个问题。
预先感谢您的帮助
安德里亚
最佳答案
即使我没有测试它,但您可能会遇到问题,因为 .pages 或 .numbers 类型的文档不是单个文件,而是 bundle 。因此您无法使用 -dataWithContentsOfURL:
读取它们。
您是否使用 -copyItemAtURL:toURL:error:
检查复印情况(NSFileManager
)?
关于objective-c - 无法使用 UIDocumentPicker 导入页面和编号文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29005891/