swift - 如何在一个 UICollectionViewController 中查看我的所有聊天室?

标签 swift firebase

因此,我尝试将所有聊天室放入一个 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)
    }
}

关于swift - 如何在一个 UICollectionViewController 中查看我的所有聊天室?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53394088/

相关文章:

ios - 如何在 iOS objective-c 中将 firebase 时间戳转换为日期?

javascript - Firebase 函数 - 从 Google 云存储桶检索文件会导致 RangeError : Maximum call stack size exceeded

ios - UIBarbuttonItem 关闭 UIVIewcontroller

arrays - 如何从嵌套数组返回值 - swift 3

Angular 2 Firebase如何获取对象中的数组

java - 获取更多最新数据 Firestore Android

javascript - 通过 NodeJS 将消息发布到 Firebase Cloud Messaging

ios - Nib IBOutlet 导致应用程序崩溃

swift - 想帮助理解这个 Swift 黑客

php - 图像未使用 Swift 在 PHP 中上传