'AppDelegate'不符合协议'GIDSignInDelegate'

时间:2017-05-04 06:37:43

标签: ios swift3 xcode8

我正在尝试在swift-3中实现Google Signin,但我遇到一个非常奇怪的错误,我正在关注链接description。但是我每次都会看到这个错误一次又一次地实现它。 我在桥接标题中添加了以下内容。

#import <Google/SignIn.h>

我已安装了广告素材GoogleSignin pod 'Google/SignIn'

这是我的AppDelegate文件代码

    class AppDelegate: UIResponder, UIApplicationDelegate, GIDSignInDelegate {   //<--Here it gives the error
        //Method implemented but giving the error
        func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
        //TODO
        }
    }

'AppDelegate'不符合协议'GIDSignInDelegate'

我尝试过重新安装播客

我尝试过清洁和其他事情,但是没有注意到帮助。

4 个答案:

答案 0 :(得分:3)

我只花了3个小时。您需要实现的正确签名是:

func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!)

但是 - 检查您是否未覆盖应用中Error的定义(或其他类GIDSignInGIDGoogleUser)。我的应用中有一个自定义Error类,它已覆盖默认的Error类。在我重命名我的Error课程后,问题就消失了。

Swift编译器在这里不是很有帮助,因为它在错误消息中为两种情况显示了类型Error,而没有表明它们都表示不同的Error类型。

本课程是不要在我的课程中使用已在Foundation中使用的名称。

答案 1 :(得分:2)

您需要在appdelegate中添加以下两个方法

func sign(_ signIn: GIDSignIn!, didDisconnectWith user: GIDGoogleUser!, withError error: Error!) {

}

func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {

}

答案 2 :(得分:0)

您必须实现GIDSignInDelegate所有必需的方法才能删除此错误。因此,请检查GIDSignInDelegate协议中的方法列表,并在AppDelegate类中实现。

didFinsishLaunchingOption方法中,将委托设置为:

GIDSignIn.sharedInstance().delegate = self

答案 3 :(得分:-1)

这是一个非常愚蠢的错误,我在我的代码中有一个名为Error的自定义类,它导致了问题,因为GidSignInDelegate方法无法识别要引用的错误类。任何寻找答案的人如果你犯了同样的愚蠢错误,请交叉检查。