“GIDSignIn”类型的值没有成员“presentingViewController”

Posted

技术标签:

【中文标题】“GIDSignIn”类型的值没有成员“presentingViewController”【英文标题】:Value of type 'GIDSignIn' has no member 'presentingViewController' 【发布时间】:2019-12-31 09:36:28 【问题描述】:

我正在学习使用 GoogleSignIn SDK(与 cocoapods 一起安装)的 google 登录应用程序。我没有在 pod 文件中指定版本,它自动安装了 GoogleSignIn (4.4.0)。浏览文档here。 根据文档,要添加登录按钮,我们必须编写

GIDSignIn.sharedInstance()?.presentingViewController = self

  // Automatically sign in the user.
  GIDSignIn.sharedInstance()?.restorePreviousSignIn()

但在最新的 Xcode 版本 10.3 (10G8) 中出现错误

Value of type 'GIDSignIn' has no member 'presentingViewController'
Value of type 'GIDSignIn' has no member 'restorePreviousSignIn'

我试图搜索这个的更新版本,但不幸的是没有找到。请帮我集成 GoogleSignIn

【问题讨论】:

你在视图控制器中import GoogleSignIn 吗? 是的,我进口了。 如果我们不导入 GoogleSignIn,那么我们的错误将是“使用未解析的标识符 'GIDSignIn'” @MuhammadDanishQureshi 您可能必须使用哪个版本?谷歌登录(5.0.0)! @SagarBhut pod 更新对我有用。谢谢你给我的想法。 【参考方案1】:

ViewControllerviewDidLoad() 中添加以下行:

GIDSignIn.sharedInstance()?.uiDelegate = self

并使ViewController 符合GIDSignInUIDelegate 协议。

【讨论】:

我收到错误,“GIDSignIn”类型的值没有成员“uiDelegate”,我没有使用 cocoapods,并且由于某些项目依赖关系,我无法在项目中使用 cocoapods。你能帮我吗 它对我有用,我尝试下载 5.0 版本,但 pods 说它找不到。因此,我必须坚持这样做【参考方案2】:

如果您使用的是 Google 登录 v5.0,则您的代码是正确的:

GIDSignIn.sharedInstance()?.presentingViewController = self

但既然你已经安装了 4.4.0,你应该接受Vitaly Shpinyov's answer。

或者通过编辑您的 podfile 将 Google Sign-In 升级到 5.0 或更高版本:
pod 'GoogleSignIn', '~> 5.0'

【讨论】:

GIDSignIn.sharedInstance()?.presentingViewController = self【参考方案3】:

在 GoogleSignIn 5.0 版本中,您可以执行以下操作

GIDSignIn.sharedInstance().clientID = FirebaseApp.app()?.options.clientID 

【讨论】:

以上是关于“GIDSignIn”类型的值没有成员“presentingViewController”的主要内容,如果未能解决你的问题,请参考以下文章

“任何”的值类型没有成员 'objectforKey' Swift 3 转换

Swift 3 - 'Any?' 类型的值没有成员“valueForKey”

“String”类型的值没有成员“stringByAppendingPathComponent”[重复]

“AnyObject”类型的值没有成员年龄

Xcode 13:`'NSPersistentCloudKitContainerOptions' 类型的值没有成员'databaseScope'`

无法弄清楚“ViewController”类型的值没有成员“averageIsAbove”