xcode 如何处理从另一个应用程序发送到我自己的iOS应用程序的“打开...”文件?

jecbmhm3  于 2023-08-07  发布在  iOS
关注(0)|答案(2)|浏览(122)

我正在开发一个应用程序,它可以读取csv文件并在tableViewController中显示其内容。在使用Xcode进行测试时,我在projects目录中有一个示例文件,我完全可以使用其位置路径读取该文件。我的问题是,我希望能够采取任何csv文件(通过某种方法发送给我),点击'打开'按钮,并将文件发送到我的应用程序。
我的应用程序显示在我可以向其发送文件的可用应用程序中。我的问题是之后会发生什么?当我选择将其发送到我的应用程序,然后切换到我的应用程序,从那里,我不知道如何接收文件,并读取它提取其内容。该文件将存放在哪里,我如何与它交互?

oiopk7p5

oiopk7p51#

这是在你的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

w80xi6nr

w80xi6nr2#

注意:如果使用SceneDelegate,则不会调用AppDelegate方法,而是调用这两个场景方法之一:

应用开启时:

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
    for urlContext in URLContexts {
        let url = urlContext.url
        print("Handle URL: \(url)")
    }
}

字符串

应用暂停或关闭需要启动时:

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
   for urlContext in connectionOptions.urlContexts {
        let url = urlContext.url
        print("Handle URL: \(url)")
   }
}

相关问题