我是swift编程的新手。我试图重构我的代码,看起来更具可读性。
使用Google帐户成功登录后登录到firebase身份验证。我想使用UserDefaults
保存用户基本信息,该操作将由saveUserUsingUserDefault(user: USER)
方法执行,该方法将从firebase身份验证中获取用户结果。
但是当我编写方法时,我需要知道用户的数据类型
func saveUserUsingUserDefault(_ user: iDontKnowWhatDataTypeShouldBeUsedInHere ) {}
我试图跳转到Xcode中的定义,但我卡住了,我不知道应该使用哪种数据类型。我无法找到数据类型。我也无法在目标C中读取代码。这里是我使用的代码。
Auth.auth().signIn(with: credential) { (USER, error) in
if let error = error {
print("failed to create firebase user using google account")
print("\(error.localizedDescription)")
return
}
print("user successfully logged into firebase")
saveUserUsingUserDefault(user: USER)
self.login()
}
func saveUserUsingUserDefault(_ user: iDontKnowWhatDataTypeShouldBeUsedInHere ) {
//Save User basic information using User Default Data Persistance
let basicUserInformation = [
"fullname" : user.displayName,
"email" : user?.email,
"city" : ""
]
UserDefaults.standard.set(basicUserInformation, forKey: "basicUserInformation")
// assign the value to superglobal variable 'userInformation' in AppDelegate
userInformation = UserDefaults.standard.object(forKey: "basicUserInformation") as? [String:Any]
}
答案 0 :(得分:1)
默认情况下,Firebase已经有了获取currentUser的方法,因此您无需保存用户默认值。除此之外,建议不要将当前用户保存在用户默认设置中以获得最佳实践。在Firebase Auth中,您可以通过以下方式获取currentUser:
let auth = Auth.auth()
let currentUser = auth.currentUser
通过在auth中调用currentUser属性返回的currentUser类型将以User(Firebase用户类型)类型返回,它将具有displayName,uid,email以及默认情况下所需的所有内容。
我通常创建自己的FirbaseController来处理所有Firebase内容并在里面创建getCurrentUser()方法。