【发布时间】:2016-06-04 02:58:09
【问题描述】:
我正在尝试使用新的 Firebase 查询特定用户,如下所示:
DataService.sharedInstance.REF_USERS.queryOrderedByChild("username").queryEqualToValue(field.text).observeSingleEventOfType(.Value, withBlock: { (snapshot) in
if let userDoesNotExist = snapshot.value as? NSNull {
print("No User found!")
} else {
let theUsr = snapshot.value as! User
print(theUsr)
}
}, withCancelBlock: { (error) in
// Error
})
从那里我希望将快照存储到它自己的对象中并从那里访问它的值。我试图这样做:
class User {
let key: String!
let ref: FIRDatabaseReference?
var username: String!
var email: String!
// Initialize from data snapshot
init(snapshot: FIRDataSnapshot) {
key = snapshot.key
email = snapshot.value!["email"] as! String
username = snapshot.value!["username"] as! String
ref = snapshot.ref
}
func toAnyObject() -> AnyObject {
return [
"email": email,
"username": username,
]
}
}
我遇到的问题是以下崩溃:
Could not cast value of type '__NSDictionaryM' (0x10239efc0) to 'Scenes.User' (0x100807bf0).
我该如何解决这个问题?我不记得在旧 Firebase 上遇到过这个问题。我需要访问 snapshot.value 的键,并且由于某种原因无法使用 snapshot.value.key 访问它而不会崩溃,所以我想我会尝试将所有数据传递到它自己的对象中。
【问题讨论】:
-
您需要单独访问每个孩子,就像这个 snapshot.childSnapshotForPath("title").value 一样!字符串
标签: swift firebase firebase-realtime-database