【问题标题】:How to handle a file sent with 'Open in...' from another app to my own iOS app?如何处理从另一个应用程序以“打开方式...”发送到我自己的 iOS 应用程序的文件?
【发布时间】:2018-03-07 14:31:19
【问题描述】:

我正在开发一个读取 csv 文件并在 tableViewController 中显示其内容的应用程序。在使用 Xcode 进行测试时,我在项目目录中有一个示例文件,我完全能够使用它的位置路径读取该文件。我遇到的问题是我希望能够获取任何 csv 文件(通过某种方法发送给我),单击“打开方式”按钮并将文件发送到我的应用程序。

我的应用程序显示在我可以将文件发送到的可用应用程序中。我的问题是之后会发生什么?当我选择将它发送到我的应用程序时,它会切换到我的应用程序并从那里,我不知道如何接收文件并读取它以提取其内容。文件放在哪里以及如何与之交互?

【问题讨论】:

    标签: ios swift xcode csv xlsx


    【解决方案1】:

    这是在您的AppDelegate 中处理的,更准确地说,您将一个 URL 传递给文档,然后在可选函数中从那里处理它,例如:

    func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
        do {
            let data = try Data(contentsOf: url)
            // Do something with the file
        } catch {
            print("Unable to load data: \(error)")
        }
    
        return true
    }
    

    更多信息:https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623112-application

    【讨论】:

    • 太棒了,它有效,我可以读取文件。我使用 String(contentsOf: url) 代替,所以我可以看到文件的内容。谢谢!
    • 最重要的问题,你知道我如何将文件的内容从 appDelegate 传递到 tableViewController 吗?
    • 协议/委托、单例、通知,你有很多可能的方式来传递数据,或者通知控制器让他自己获取数据。选择权在你。
    猜你喜欢
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2013-05-16
    • 2012-05-17
    相关资源
    最近更新 更多