我正在尝试在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'
我尝试过重新安装播客
我尝试过清洁和其他事情,但是没有注意到帮助。
答案 0 :(得分:3)
我只花了3个小时。您需要实现的正确签名是:
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!)
但是 - 检查您是否未覆盖应用中Error
的定义(或其他类GIDSignIn
,GIDGoogleUser
)。我的应用中有一个自定义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方法无法识别要引用的错误类。任何寻找答案的人如果你犯了同样的愚蠢错误,请交叉检查。