私はまだSwiftを学ぶのが初めてです。私は以下に説明するように、私はまだエラーを取得しています、私はそうしていると信じていますが、それは私がすべてのoptionalsをアンラップする必要があることが示唆されたいくつかの他の記事をレビュー:'(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