因此,我尝试将所有聊天室整合到一个 CollectionViewController 中,但我只能看到一个,而在那个中我看不到图像和我命名聊天室的标签。我看到的只是一张白色图片和原始标签。我的代码:
func CreateNewRoom(user: User, caption: String, data: NSData) {
let filePath = "\(user.uid)/\(Int(NSDate.timeIntervalSinceReferenceDate))"
let metaData = StorageMetadata()
metaData.contentType = "image/jpg"
storageRef.child(filePath).putData(data as Data, metadata: metaData) { (metadata, error) in
if let error = error {
print("Error uploading: \(error as NSError)")
return
}
let chatRef = self.storageRef.child("images/chat.jpg")
chatRef.downloadURL { url, error in
if error != nil {
} else {
}
}
if Auth.auth().currentUser != nil {
let idRoom = self.BASE_REF.child("rooms").childByAutoId()
idRoom.setValue(["caption": caption, "thumbnailUrlFromStorage": self.storageRef.child(metadata!.path!).description, "fileUrl": self.fileUrl])
}
}
}
func fetchDataFromServer(callback: @escaping (Room) -> ()) {
DataService.dataService.ROOM_REF.observeSingleEvent(of: .childAdded) { (snapshot) in
print("FOUND ROOM "+snapshot.key)
let room = Room(key: snapshot.key, snapshot: snapshot.value as! Dictionary<String, AnyObject>)
callback(room)
}
}
您只能看到一个聊天室的原因是因为您正在调用observeSingleEventv
,它在第一个子节点之后停止侦听。要从 获取所有子节点ROOM_REF
,请使用observe
。
所以:
func fetchDataFromServer(callback: @escaping (Room) -> ()) {
DataService.dataService.ROOM_REF.observe(.childAdded) { (snapshot) in
print("FOUND ROOM "+snapshot.key)
let room = Room(key: snapshot.key, snapshot: snapshot.value as! Dictionary<String, AnyObject>)
callback(room)
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句