【发布时间】:2019-04-12 12:42:44
【问题描述】:
我正在将一些遗留的 Objective-C 代码翻译成 Swift。在这里,我正在努力处理一些 URL 方案。
应用程序委托中的以下 Objective-C 代码返回外部应用程序的 id,它通过 URL 方案发送消息:
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
NSString *appName = [options valueForKey:@"UIApplicationOpenURLOptionsSourceApplicationKey"];
NSString *urlVal = [url absoluteString];
NSLog(@"external url scheme call from app %@: %@", appName, urlVal);
return TRUE;
}
在 Swift 中,存在相同的方法,但在选项字典中,不再有关于发送应用程序的信息。此外,我无法打印 国外应用的id:
func application(_ app: UIApplication, open url: URL,
options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
let appName = options[.sourceApplication]
let urlVal = url.absoluteString
NSLog("external url scheme call from %@: %@", appName, urlVal)
return true
}
所以问题是:如何在上述方法的 Swifts 实现中获取发送应用程序的 id?
【问题讨论】:
-
请edit 提出您的问题并展示您的尝试(如下面答案的 cmets 中所述)。清楚地解释您在这些尝试中遇到的问题。
标签: objective-c swift