Ios NSFileProvider importDocument在从MSOffice应用程序保存新文档时提供空文件的fileURL

Ios NSFileProvider importDocument在从MSOffice应用程序保存新文档时提供空文件的fileURL,ios,swift,ios11,fileprovider-extension,Ios,Swift,Ios11,Fileprovider Extension,我正在尝试在Word.app中创建新文档,并通过FileProvider扩展保存到我的应用。我对适当方法的实施是: override func importDocument(at fileURL: URL, toParentItemIdentifier parentItemIdentifier: NSFileProviderItemIdentifier, c

我正在尝试在Word.app中创建新文档,并通过FileProvider扩展保存到我的应用。我对适当方法的实施是:

    override func importDocument(at fileURL: URL,
                                 toParentItemIdentifier parentItemIdentifier: NSFileProviderItemIdentifier,
                                 completionHandler: @escaping (NSFileProviderItem?, Error?) -> Void)
    {

        let internalUrl = NSFileProviderManager.default.documentStorageURL.appendingPathComponent(fileURL.lastPathComponent, isDirectory: false)

        guard fileURL.startAccessingSecurityScopedResource() else { fatalError() }
        try! FileManager.default.copyItem(at: fileURL, to: internalUrl) // breakpoint here
        fileURL.stopAccessingSecurityScopedResource()

        // update local db, whatever

        completionHandler(TemporaryItem(forImporting: internalUrl, into: parentItemIdentifier), nil)
    }
显然,当我通过
po FileManager.default.attributesfitem(forPath:fileURL.path)
命令放置断点并检查文件属性时,NSFileSize的值为0。 命令
po FileManager.default.contents(atPath:fileURL.path)
返回带有0x000000000000bad0指针的0字节数据。 正在写入internalUrl的文件也是空的

最奇怪的是,这种情况只发生在MS Word、Excel和PowerPoint应用程序中。从PSPDFKit、文件或照片中保存的文件的相同代码可以完美地工作。另一方面,Word将文件正确地保存到其他文件提供程序,如Dropbox,因此问题不应该存在

我试着用文件协调器来做这件事,但没用。我已经验证了每个startAccessingSecurityScopedResource()都有它的stopAccessingSecurityScopedResource()。我已经在两台iOS11.3设备上进行了测试——相同的bahavior。我甚至还发现了其他执行相同操作的应用程序


除了期望iOS应用程序扩展正常工作之外,我做错了什么?

因为Word应用程序将触发多次导入文档

在第一次importDocument调用时,它尝试在文件提供程序扩展名上创建空文件。这就是导入文件的大小为0的原因

如果处理得当,Word应用程序将获取保存的文件路径并更新其中的文件。 然后它将触发下一个itemChangedAtURL:api,并使用它刚刚获得的文件路径