我对学习Swift仍然很陌生。我回顾其中有人建议我需要解开任何自选其他几个职位,我相信我已经这样做了,但我仍然得到错误的解释如下:无法将类型'(User) - > Dictionary <String,String>'的值转换为期望的参数类型'Dictionary <String,String>'
下面给出
let user = User(uid: authData.uid! , email: email!, firstName: firstName!,
lastName: lastName!, provider: authData.provider!)
let userDictionary = User.getUserDictionary(user)
// Add new account to the Firebase database
UserAccountService.firebaseDBService.createNewAccount(authData.uid, user: userDictionary)
的代码片段
上线获取错误
Cannot convert value of type '(User) -> Dictionary<String, String>' to
expected argument type 'Dictionary<String, String>'
UserAccountService.firebaseDBService.createNewAccount(authData.uid, user: userDictionary)
功能:
func createNewAccount(uid: String, user: Dictionary<String, String>) {
// A User is born.
USER_REF.childByAppendingPath(uid).setValue(user)
}
User.swift:
import Foundation
import Firebase
class User: NSObject {
let uid: String
let email: String
let firstName: String
let lastName: String
let provider: String
// Initialize from Firebase
init(authData: FAuthData, firstName: String, lastName: String) {
self.uid = authData.uid!
self.email = authData.providerData["email"] as! String
self.firstName = firstName
self.lastName = lastName
self.provider = authData.provider!
}
// Initialize from arbitrary data
init(uid: String, email: String, firstName: String, lastName: String, provider: String) {
self.uid = uid
self.email = email
self.firstName = firstName
self.lastName = lastName
self.provider = ""
}
// Return a Dictionary<String, String> from User object
func getUserDictionary(user: User) -> Dictionary<String, String> {
//let provider = user.provider as String!
let email = user.email as String!
let firstName = user.firstName as String!
let lastName = user.lastName as String!
let userDictionary: [String : String] = [
"provider" : user.provider as String!,
"email" : email,
"firstName" : firstName,
"lastName" : lastName
]
return userDictionary
}
}
它应该是'let userDictionary = user.getUserDictionary()'。代码区分大小写,你试图调用类的方法而不是你创建的实例。 – dan
谢谢!我现在看到了我的愚蠢的错误。我花了几个小时盯着这个,并没有听清楚。谢谢! – Jace