我正在学习用Swift编写ios应用程序。
但是,当我按照Google Developers页面上的说明进行操作时。
https://developers.google.com/identity/sign-in/ios/start?ver=swift
Xcode显示许多编译错误。
例如,指令上的这段代码需要在AppDelegate中添加:
func application(application: UIApplication,
openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool {
var options: [String: AnyObject] = [UIApplicationOpenURLOptionsSourceApplicationKey: sourceApplication,
UIApplicationOpenURLOptionsAnnotationKey: annotation]
return GIDSignIn.sharedInstance().handleURL(url,
sourceApplication: sourceApplication,
annotation: annotation)
}
这将显示
ambiguous reference to member 'subscript'
我需要将此代码更改为:
private func application(application: UIApplication,
openURL url: URL, options: [String: AnyObject]) -> Bool {
return GIDSignIn.sharedInstance().handle(url as URL!,
sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication.rawValue] as? String,
annotation: options[UIApplicationOpenURLOptionsKey.annotation.rawValue])
}
然后它将通过编译器。
另一个编译错误是需要在AppDelegate中添加两个代码:
func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!,
withError error: NSError!) {
if (error == nil) {
// Perform any operations on signed in user here.
let userId = user.userID
// ...
} else {
print("\(error.localizedDescription)")
}
}
func signIn(signIn: GIDSignIn!, didDisconnectWithUser user:GIDGoogleUser!,
withError error: NSError!) {
// Perform any operations when the user disconnects from app here.
// ...
}
调试器告诉我,我需要替换函数名
“signIn”是“签名”
它将通过编译器。
最后两个编译错误与上行相同。
编译器告诉我,我需要在我的UIviewcontroller代码中将“signIn”函数更改为“sign”。
“而是”
虽然我完全遵循编译器指令,并且成功运行模拟器,但当用户允许app获取用户数据时,我仍然无法获取数据。
编译器为我展示了这个:
实施 application:openURL:sourceApplication:annotation:not found。请 将处理程序添加到App Delegate中。类: MyClassName .AppDelegate
SO ......
有人知道为什么应用程序找不到我的处理程序吗?
我猜这些编译错误是ios更新到10的原因,然后我不知道改变函数名称的动作是否让我无法获取谷歌的数据。
感谢您的回答。 :)
Google Developers页面: https://developers.google.com/identity/sign-in/ios/sign-in?ver=swift