我試圖初始化User
對象中的值,但是從另一個問題看來,它不可能在那裏執行 - 現在,試圖在視圖控制器中執行相同的操作,如viewDidLoad
,I 「M運行到另一個錯誤:從Firebase設置用戶值
這是我火力地堡呼叫viewDidLoad
(myUser
是一個全局變量var myUser:User!
):
let userRef: FIRDatabaseReference = FIRDatabase.database().reference().child("users").childByAutoId()
let userRefHandle: FIRDatabaseHandle?
userRefHandle = userRef.observe(.value, with: { (snapshot) -> Void in
let userData = snapshot.value as! Dictionary<String, AnyObject>
let id = snapshot.key
if (FIRAuth.auth()?.currentUser?.uid) != nil {
if let name = userData["name"] as! String!, name.characters.count > 0 {
let handle = userData["handle"] as! String!
let gender = userData["gender"] as! String!
let profilePicture = userData["profilePicture"] as! String!
let uid = userData["uid"] as! String!
// let rooms = userData["rooms"] as! [[String : AnyObject]]
myUser.uid = uid
myUser.uid = handle
myUser.uid = name
myUser.uid = profilePicture
myUser.uid = gender
// myUser.rooms = rooms
} else {
print("Error! Could not initialize User data from Firebase")
}
}
})
這樣做的最終目標是,這樣當用戶啓動應用程序(已經註冊並且他們的信息在Firebase中),他們的i nfo從數據庫中提取並設置爲User
對象,以便可以在應用程序(名稱,句柄,profilePicture等)周圍使用這些值。
我收到錯誤:Could not cast value of type 'NSNull' (0x106d378c8) to 'NSDictionary'
在let userData = snapshot.value
行。
這是用戶的數據看起來像在火力地堡什麼:
"users" : {
"-KgjW9PEvCPVqzn7T5pZ" : {
"gender" : "male",
"handle" : "TestHandle123",
"name" : "Timothy",
"profilePicture" : "https://graph.facebook.com/*removed*/picture?type=large&return_ssl_resources=1",
"uid" : "2q4VCKu1e7hiL84ObdzgQcQ0pH63"
}
}
我想知道如果這是設置從火力地堡用戶價值的正確方法,如果是的話,如何避免錯誤?
在你的代碼
良好的捕獲,我修正了,但它不影響我得到的錯誤。 – KingTim