Swift Scene Delegate 在首次启动时不运行代码

Posted

技术标签:

【中文标题】Swift Scene Delegate 在首次启动时不运行代码【英文标题】:Swift Scene Delegate doesn't run code on first launch 【发布时间】:2020-08-11 12:02:02 【问题描述】:

当使用 UTI 导入文件打开应用程序时,我有一个在场景委托中运行的代码。代码工作正常,但应用程序必须正在运行并加载视图控制器才能执行,我该怎么做才能在应用程序通过单击文件启动时运行代码?

SceneDelegate.swift

class SceneDelegate: UIResponder, UIWindowSceneDelegate 

var window: UIWindow?


func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) 

    guard let _ = (scene as? UIWindowScene) else  return 

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) 
      if let url = URLContexts.first?.url 
          // Handle URL
          let needTo = url.startAccessingSecurityScopedResource()

          do 
            let data = try Data(contentsOf: url)
            let contents = String(
              data: data,
              encoding: String.Encoding.utf8
            )
              if let x = contents
              

                  MatchDecoder.decodeText(content: x)
                  
              
           catch(let error)  print(error) 

          if needTo 
            url.stopAccessingSecurityScopedResource()
          
      
  
//....

【问题讨论】:

【参考方案1】:

设法修复它,对于任何有同样问题的人,添加这个,现在 URL 也将在第一次启动时运行!

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) 
    
    guard let _ = (scene as? UIWindowScene) else  return 
    self.scene(scene, openURLContexts: connectionOptions.urlContexts)

【讨论】:

以上是关于Swift Scene Delegate 在首次启动时不运行代码的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SwiftUI 在首次应用启动时启动教程?

UITableViewCell 在首次加载时无法正确呈现

在首次显示之前获取屏幕高度?

Foundation 兜风仅在首次加载问题时启动

为啥谷歌地图在首次启动时不会自动缩放到用户位置?

应用程序在首次启动后关闭