【问题标题】:Delete a specific value in an array from Firestore Swift从 Firestore Swift 中删除数组中的特定值
【发布时间】:2020-07-24 05:15:19
【问题描述】:

我这里有这段代码,我想删除数组“Answered”中的某个值。有没有一种简单的方法来访问数组中的第一个值?这是正确的,但显示了我想要发生的事情 "Answered[0]"

let uid = Auth.auth().currentUser?.uid
            print(self.randomArray)
          let wash = db.collection("users").document(uid!)
          wash.updateData([
            "Answered": FieldValue.arrayUnion([self.randomArray])
              ])
          }
            if(self.check.isEmpty != true){
                self.whichQuestion = self.check[0]
                self.whichQuestionString = String(self.whichQuestion)
                db.collection("users").document(uid!).updateData([
                    "Answered": FieldValue.delete(),
                ]) { err in
                    if let err = err {
                        print("Error updating document: \(err)")
                    } else {
                        print("Document successfully updated")
                    }
                }

【问题讨论】:

    标签: swift firebase google-cloud-firestore


    【解决方案1】:

    但是,如果您的数组包含唯一值,您可以 remove the item 使用:

    self.whichQuestionString = String(self.whichQuestion)
    db.collection("users").document(uid!).updateData([
        "regions": FieldValue.arrayRemove([whichQuestionString])
    ])
    

    如果只知道item的索引,不知道整个数组就没有办法移除它。

    这个方法是:

    1. 从 Firestore 读取文档
    2. 修改应用程序代码中的数组
    3. 将整个修改后的数组写回 Firestore

    另请参阅(不幸的是,其中没有一个适用于 Swift):

    【讨论】:

    • 非常感谢,稍作调整即可使用。我只需要在 ArrayRemove 中使用“self.whichQuestion”而不是“whichQuestionString”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    相关资源
    最近更新 更多