我正在处理导入模式的文档提供程序扩展。
文件的URL位于扩展名和扩展名共享的共享容器内。容器应用。
我断言失败说它应该位于共享容器/文件提供程序存储目录中。
所以我将文件从原始目录复制到File Provider Storage目录。
我有原始位置的文件&我也在新的复制位置获得了一个文件。我也检查了文件的数据长度,正确,
但是当我打电话给[self dismissGrantingAccessToURL:toUrl];
它不会解雇UIDocumentPickerExtensionViewController
,
我没有遇到任何例外,但它不会解雇并启动转移,因此用户仍然可以访问扩展程序。
以下是我的代码,如果有人遇到同样的事情,请留下你的回复。
- (void)userChoosesEntityOfUrl:(NSURL *)url
{
NSURL *toUrl = [self.documentStorageURL URLByAppendingPathComponent:[url lastPathComponent]];
if ([[NSFileManager defaultManager] fileExistsAtPath:[toUrl path]]) {
[[NSFileManager defaultManager] removeItemAtPath:[toUrl path] error:nil];
}
if ([[NSFileManager defaultManager] copyItemAtURL:url toURL:toUrl error:nil]) {
NSLog(@"%@", [toUrl path]);
}
if (![[NSFileManager defaultManager] fileExistsAtPath:[toUrl path]]) {
NSLog(@"File Doesn't exists at this path");
return;
}
NSLog(@"Data Length %i",[[NSData dataWithContentsOfFile:[toUrl path]] length]);
[self dismissGrantingAccessToURL:toUrl];
}
答案 0 :(得分:2)
在调试NSFileProviderExtension
的实现时,通常最终会使用Xcode停止/终止它。在此之后,iOS经常在重新启动文件扩展名时出现问题。这会导致您在调用dismissGrantingAccessToURL:
后没有解雇您的文档选择器。此错误也会影响UIDocumentPickerExtensionViewController
的子类,有时无法启动(您只能看到文档选择器的导航栏,而不会看到内容)。
解决方法是重启设备。
答案 1 :(得分:0)
如果您有一个尚未完全实现的支持文件提供程序扩展,则会发生这种情况。从嵌入式扩展阶段中删除文件提供程序目标,将文档扩展名设置为仅支持Info.plist中的导入/导出模式,并执行产品 - >在构建和运行扩展程序之前清理。