如何在Swift 4中访问[UIApplicationOpenURLOptionsKey:Any]的值?

Ran*_*son 1 swift

我是斯威夫特的新人.我希望访问此方法sourceApplicationoptions参数内的值.

optional func application(_ app: UIApplication, 
                     open url: URL, 
                  options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool
Run Code Online (Sandbox Code Playgroud)

我检查了文档,发现这UIApplicationOpenURLOptionsKey是一个结构.它包含一个类型属性:static let sourceApplication: UIApplicationOpenURLOptionsKey

但是,当我尝试sourceApplication通过执行此操作来访问该值时:

options.sourceApplication
Run Code Online (Sandbox Code Playgroud)

...抛出此错误:

型的"值[UIApplicationOpenURLOptionsKey : Any]"没有成员" sourceApplication"

我有一个想法,这可能是一本字典,但关键的类型是UIApplicationOpenURLOptionsKey.我不知道如何使用密钥类型访问该值UIApplicationOpenURLOptionsKey.

我检查了教程点和其他一些网站,但没有找到解决方案.

我的问题是:

  1. 如何访问指定的值sourceApplicationoptions
  2. 你怎么称呼这种类型的参数?([UIApplicationOpenURLOptionsKey : Any] = [:])?这是一本字典吗?

Tam*_*gel 8

更新Swift 4.2

该方法更改为:

func open(_ url: URL, 
          options: [UIApplication.OpenExternalURLOptionsKey : Any] = [:], 
          completionHandler completion: ((Bool) -> Void)? = nil)
Run Code Online (Sandbox Code Playgroud)

您可以以相同的方式访问密钥.


options是一本字典.你应该访问它的sourceApplication 密钥.

if let sourceApp = options[.sourceApplication] as? String {
    //work with the value
}
Run Code Online (Sandbox Code Playgroud)

来自Apple的文档sourceApplication:

包含向您的应用发送开放URL请求的应用的捆绑包ID.价值是一个NSString对象.