我有以下 Firebase 实时数据库结构:
posts: {
user1_uid: {
-Kfm0p2EMcrpN8XcLOR5: {
created_at: 1490119356.786182,
image_height: 374.9999999999999,
image_url: "ttps://firebasestorage.googleapis.com/v0/b/mak...",
like_count: 4,
poster: {
uid: user1_uid,
username: "testuser"
}
},
-KgGuLttcC3PJbD8pWAT: { ... },
-KgLo0OrineV8l3_K9gK: { ... }
},
user2_uid: { ... },
user3_uid: { ... }
}
具有以下“Post”结构:
init?(snapshot: DataSnapshot) {
guard
let value = snapshot.value as? [String: AnyObject],
let uID = value["poster/uid"] as? String,
let userName = value["poster/username"] as? String,
let text = value["text"] as? String,
let likes = value["likes"] as? Int,
let created = value["created"] as? String,
let iHeight = value["imageheight"] as? Double,
let imageName = value["imagename"] as? String
else {
print("************************************************")
print("PostStore init?(snapshot: DataSnapshot) ERROR!!!")
print("************************************************")
return nil
}
self.id = snapshot.key
self.uID = uID!
self.userName = userName!
self.text = text!
self.created = created!
self.likes = likes!
self.iHeight = iHeight!
self.imageName = imageName!
}
当我运行代码时我总是得到else portion of the statement executed with the error
打印出来?!
我认为问题出在以下代码上:
let uID = value["poster/uid"] as? String,
let userName = value["poster/username"] as? String,
因为它有一个子节点。我不确定如何访问信息中的该节点?
有人可以帮忙吗!
******* 更新 ******
另一方面,我将如何写入当前的数据库:
func toAnyObject() -> Any {
return [
"poster/username": userName,
"poster/uid": uID,
"text": text,
"created": created,
"likes": likes,
"imageheight": iHeight,
"imageName": imageName
]
}
在写入 firebase 数据库时,我如何解释子节点“海报”,因为使用/
字符崩溃。