ios - 在 Firestore 中获取数据

标签 ios swift firebase firebase-realtime-database google-cloud-firestore

Firestore中是否有任何方法可以获取单个数组中的数据列表,例如..在Firebase RealTimeDatabase中,我们通过调用单个值而不是使用ForEachLoop来获取数据列表...例如,在realtimeDatabase中,我们通过以下方式获取值:

var messageArray  : [Message] = [ ] ()

Database.database().reference.child("messages").observe( .childAdded , with : { (snapshot) in 
    let snapShotValue = snapshot.value

    let text = snapShotValue["text"] as! String
    let username = snapShotValue["username"] as! String

    let message = Message( text ,username)

    self.messageArray.append(message)
}

但是在Firestore中我们必须使用ForLoop,这是可以的,但在某些情况下我必须在Firestore中使用RealTimeDatabase选项......例如在Firestore中我们使用:

FireStore.firestore().collection("messages").getDocuments { (snapshot , error ) in 

    for document in snaphot.document {

        let data = document.data( )
        let text = data["text"] as! String
        let username = data["username"] as! String


        let message = Message( text , username)
        self.messageArray.append(message)
     }
}

有没有办法像FireBase RealTimeDatabase一样将Firestore的数据作为整个ObjectArray获取

最佳答案

您可以将所有对象数据存储在一个数组中,如下所示:

let allData = snapshot.documents.compactMap { $0.data() }

关于ios - 在 Firestore 中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57086714/

相关文章:

ios - viewDidLoad上的UIButton渐变效果问题

ios - Swift 3,如何首先解析并在下一个 TableViewController 上显示它

ios - 在 didSelectRowAtIndexPath 中动画 NSLayoutConstraint 不起作用

ios - 如何在多个(在我的设置中为 3 个)ViewController 之间传递数据?

swift - 创建用户 Swift 时的 Firebase 错误处理

java - 机器人:得到 child 的 child

ios - 使用过滤器使单元格自行删除

ios - 更改 mkmapview(删除注释)

ios - 多个 UIDatePicker 一个 uitextfield

android - 电话 : numeric keyboard for text input