ios - 与 UIDocumentInteractionController 共享文档

标签 ios swift uidocumentinteractioncontroller

我正在尝试使用 UIDocumentInteractionController 共享存储在临时目录中的文档。本质上,我使用的是以下代码:

@IBAction func createDocumentButtonClicked(_ sender: Any) {
    do {
        // create temporary file
        let tempUrl = FileManager.default.temporaryDirectory.appendingPathComponent("fileName.txt")
        try "abc".write(to: tempUrl, atomically: true, encoding: .utf8)

        // share file
        let documentInteractionController = UIDocumentInteractionController(url: tempUrl)
        documentInteractionController!.name = "filename.txt"
        documentInteractionController!.presentOptionsMenu(from: view.frame, in: view, animated: true)
    } catch {
        // ...
    }
}

运行时,此代码显示共享操作表。日志表明一些问题:无法实例化类 NSURL。错误:错误域 = NSCocoaErrorDomain 代码 = 4864 ““public.url”类型的 URL 存档包含无效数据。” UserInfo={NSDebugDescription=“public.url”类型的 URL 存档包含无效数据。 选择任何选项都会导致文档处理失败。

这被简化为几乎教科书级别的代码,但它不起作用。我错过了什么?

更新: 添加了更好地强调问题原因的上下文(请参阅下面的答案)。

最佳答案

结果证明这是微不足道的,甚至是愚蠢的。无论如何我都会留下这个问题,以防其他人绊倒它。

我需要在呈现 Controller 的按钮操作处理程序之外维护 UIDocumentInteractionController 的实例。我将更新问题以更好地显示此问题。稍作改动,它就可以按预期工作:

var documentInteractionController: UIDocumentInteractionController?

@IBAction func createDocumentButtonClicked(_ sender: Any) {
    do {
        // create temporary file
        let tempUrl = FileManager.default.temporaryDirectory.appendingPathComponent("fileName.txt")
        try "abc".write(to: tempUrl, atomically: true, encoding: .utf8)

        // share file
        documentInteractionController = UIDocumentInteractionController(url: tempUrl)
        documentInteractionController!.name = "filename.txt"
        documentInteractionController!.presentOptionsMenu(from: view.frame, in: view, animated: true)
    } catch {
        // ...
    }
}

关于ios - 与 UIDocumentInteractionController 共享文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68346598/

相关文章:

ios - 使用标签栏从另一个 View 返回时如何重新加载 View Controller

ios - 向 UITabBar SWIFT 添加中心按钮

ios - UIDocumentInteractionController 支持横向和纵向

ios - 在包含 collectionView 的 tableview XIB 中呈现 DocumentInteractionController

ios - 可重用的 UITableviewcell 无法正确显示初始图像

ios - 自定义 "Pressed"UIBarButtonItem 背景

ios - 在 AVPlayer 顶部绘制按钮

ios - iOS 上可能的最大字体大小

ios - 为什么我不能操作我的 xib 文件中的对象?