从Firestore Swift删除数组中的特定值

时间:2020-04-11 13:28:42

标签: swift firebase google-cloud-firestore

我在这里有此代码,我想删除数组“ 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")
                    }
                }

1 个答案:

答案 0 :(得分:1)

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

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

如果仅知道项目的索引,则无法在不了解整个数组的情况下将其删除。

此方法的秘诀是:

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

另请参阅(不幸的是,其中没有一个是针对Swift的):