UIDocumentPickerExtensionViewController的dismissGrantingAccessToURL无法正常工作

时间:2014-10-08 13:08:04

标签: ios8 ios8-extension

我正在处理导入模式的文档提供程序扩展。

文件的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];
}

2 个答案:

答案 0 :(得分:2)

在调试NSFileProviderExtension的实现时,通常最终会使用Xcode停止/终止它。在此之后,iOS经常在重新启动文件扩展名时出现问题。这会导致您在调用dismissGrantingAccessToURL:后没有解雇您的文档选择器。此错误也会影响UIDocumentPickerExtensionViewController的子类,有时无法启动(您只能看到文档选择器的导航栏,而不会看到内容)。

解决方法是重启设备。

答案 1 :(得分:0)

如果您有一个尚未完全实现的支持文件提供程序扩展,则会发生这种情况。从嵌入式扩展阶段中删除文件提供程序目标,将文档扩展名设置为仅支持Info.plist中的导入/导出模式,并执行产品 - >在构建和运行扩展程序之前清理。