【问题标题】:Google sign in ambiguous reference to member 'subscript'谷歌签署了对成员“下标”的模棱两可的引用
【发布时间】:2017-02-07 05:27:02
【问题描述】:

application:openURL:options: 应用委托的方法。 该方法应该调用GIDSignIn实例的handleURL方法, 这将正确处理您的应用程序收到的 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])
}

【问题讨论】:

    标签: ios swift3 subscript


    【解决方案1】:

    如果您将多个 URL 方案与 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])
    
    }
    

    【讨论】:

      【解决方案2】:

      您有一些问题。在 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:App Delegate 中的 Signal SIGABRT 错误
      • _ & open 是外部参数名称吗?为什么options 没有外部参数名?
      • @Honey 这些是方法调用者使用的参数标签。 _ 表示没有为参数提供名称。如果参数没有单独的标签(如options),则使用参数名称作为参数标签。这在 Apple 的 Swift 3 的“The Swift Programming Language”一书中都有介绍。
      • @rmandy 谷歌登录功能不是Firebase自己发布的吗??我已将所有代码都转换为 swift 3,但谷歌登录按钮仍然不起作用。
      • 我建议您发布一个新问题,因为您正在处理一个新问题。请务必提供有关崩溃的相关代码和完整详细信息。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多