如何在 Swift 4 中访问 [UIApplicationOpenURLOptionsKey : Any] 的值?
Posted
技术标签:
【中文标题】如何在 Swift 4 中访问 [UIApplicationOpenURLOptionsKey : Any] 的值?【英文标题】:How can I access values of [UIApplicationOpenURLOptionsKey : Any] in Swift 4? 【发布时间】:2017-12-05 12:51:38 【问题描述】:我是 Swift 的新手。我希望访问此方法的options
参数内的 sourceApplication
值。
optional func application(_ app: UIApplication,
open url: URL,
options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool
我检查了the documentation,发现UIApplicationOpenURLOptionsKey
是一个结构。它包含一个类型属性:static let sourceApplication: UIApplicationOpenURLOptionsKey
但是当我尝试通过这样做访问sourceApplication
值时:
options.sourceApplication
...抛出此错误:
“
[UIApplicationOpenURLOptionsKey : Any]
”类型的值没有成员“sourceApplication
”
我想这可能是一个字典,但是键的类型是UIApplicationOpenURLOptionsKey
。我不知道如何使用键类型 UIApplicationOpenURLOptionsKey
访问值。
我查看了教程点和其他一些网站,但没有找到解决方案。
我的问题是:
-
如何从
options
访问名为sourceApplication
的值?
您如何称呼这种类型的参数? ([UIApplicationOpenURLOptionsKey : Any] = [:]
)?这是字典吗?
【问题讨论】:
【参考方案1】:Swift 4.2 更新
方法改为:
func open(_ url: URL,
options: [UIApplication.OpenExternalURLOptionsKey : Any] = [:],
completionHandler completion: ((Bool) -> Void)? = nil)
您可以以相同的方式访问密钥。
options
是一个字典。你应该访问它的sourceApplication
key。
if let sourceApp = options[.sourceApplication] as? String
//work with the value
From Apple's documentation about sourceApplication
:
包含向您的应用发送开放 URL 请求的应用的捆绑 ID。值为
NSString
对象。
【讨论】:
非常感谢您的快速回答!现在我明白它是如何完成的了。但是我可以问一下 = [:] 这意味着什么吗? 表示默认为空字典 请注意 UIApplicationOpenURLOptionsKey 是多余的。 (不需要)[.sourceApplication]
@LeoDabus 谢谢,我知道了,我是故意这样写的。 (初学者通过这种方式更容易看懂)
评论针对的是OP以上是关于如何在 Swift 4 中访问 [UIApplicationOpenURLOptionsKey : Any] 的值?的主要内容,如果未能解决你的问题,请参考以下文章