在我的应用程序中,有一个名为room的数据对象,它包含以下属性......
class Room: NSObject {
var rid: String?
var owner: String?
var groupChatName: String?
var groupChatDescription: String?
var members: AnyObject?
}
这是相应的JSON
"A632CA68-40D9-4F3A-B8C8-245457057443" : {
"groupChatDescription" : "Test Description",
"groupChatName" : "Test Name",
"members" : {
"WuqCAt4mM3h0P0X1m7hVZ7NQyLC2" : {
"username" : "Steve"
}
},
"owner" : "Steve"
},
当我从数据库中检索这些值时,我将它们放在字典中
func fetchAllRooms(){
Database.database().reference().child("rooms").observe(.childAdded, with: {(snapshot) in
if let dictionary = snapshot.value as? [String: AnyObject] {
let room = Room()
room.rid = snapshot.key
room.setValuesForKeys(dictionary)
self.rooms.append(room)
print("\(room.members)")
DispatchQueue.main.async(execute: {
self.collectionView?.reloadData()
})
}
print("end of room snap")
}, withCancel: nil)
}
数据正确匹配,但是处理成员比我原先预期的要困难得多。
print("\(room.members)")
返回
Optional({
WuqCAt4mM3h0P0X1m7hVZ7NQyLC2 = {
username = "Steve";
};
})
这是很多无关的文字。特别是考虑到这只是一个成员,我需要在app中返回一个成员列表。
我认为最适合我的情况是为当前字典中的成员创建字典。考虑每个成员都会有其他属性,例如对他们的个人资料图片的引用。
所以我可以调用类似print("\(room.members.usernames)")
的内容并获取所有用户名,并且以后仍然可以使用其他属性。
但我不知道这是最好的解决方案,还是从哪里开始。我希望FireBase有一些内置的方法来处理这个问题,但到目前为止我还没有找到任何东西。
非常感谢任何答案,建议和/或参考。