谷歌签署成员'下标'的含糊不清的参考

时间:2016-09-29 03:30:09

标签: ios swift3 subscript

app委托的

application:openURL:options:方法。 该方法应调用handleURL实例的GIDSignIn方法, 这将正确处理您的应用程序收到的URL 在身份验证过程结束时。

直接从firebase指南文档中复制但仍有错误。

func application(application: UIApplication, openURL url: NSURL, options: [String: AnyObject]) -> Bool {
    return GIDSignIn.sharedInstance().handleURL(url as URL!, sourceApplication: 
        options[UIApplicationOpenURLOptionsSourceApplicationKey]  //Error is here
        //Ambiguous reference to member 'subscript' error is shown.

        as? String, annotation: options[UIApplicationOpenURLOptionsAnnotationKey])
}

2 个答案:

答案 0 :(得分:25)

你有一些问题。委托方法应该在Swift 3中具有以下签名:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool

,整个方法是:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    return GIDSignIn.sharedInstance().handleURL(url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: options[UIApplicationOpenURLOptionsKey.annotation])
}

答案 1 :(得分:0)

如果您使用多种网址方案以及Google登录,请按以下方式使用:

func application(application: UIApplication,
                 openURL url: NSURL,
                 options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {

    return GIDSignIn.sharedInstance().handle(url as URL!,
                                             sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String!,
                                             annotation: options[UIApplicationOpenURLOptionsKey.annotation])

}