Как обновить конкретное поле из массива словаря в FireStore с помощью Swift? - PullRequest
0 голосов
/ 10 мая 2019

enter image description here

Я использую firestore для своего приложения, внутри каждого документа у меня есть массив словарей.Я хочу обновить определенное словарное поле из массива.Сверяясь с индексом, я не могу обновить определенное поле словаря.Кто-то, пожалуйста, пролите немного света.

Добавляю код ниже, где добавляю каждый словарь в массив словаря.

Заранее спасибо.

 let patientID = UserDefaults.standard.string(forKey:"patient_id")
    db.whereField("patient_id", isEqualTo: patientID as Any).getDocuments { (snapShot, err) in
        if let err = err{
            print(err.localizedDescription)
        }else if snapShot!.documents.count != 1 {
            print("Perhaps this is an error for you?")
            self.showAlert(title: "Failure", msg: "Bad response from firestore")
            self.HUD.hide(true)
        }else{
        let document = snapShot!.documents.first
        let dictionaries  = snapShot!.documents.compactMap({$0.data()})
            for item in dictionaries{
                let patientCase = item["patient_case"]
                print(patientCase!)
                for eachItem in (patientCase as? NSArray)!{
                    caseDictionary.append(eachItem as! Dictionary)
                }
            }
        print(caseDictionary)
        let uploadData = ["patient_case":caseDictionary]
        document?.reference.setData(uploadData, merge: true, completion: { (error) in
                if error == nil {
                    print("Data added successfully")
                    self.HUD.hide(true)
                   // self.delegate!.isCreatedSuccessfully(success: true)
                    for controller in self.navigationController!.viewControllers as Array {
                        if controller.isKind(of:  ParentController.self) {
                            let vc =  self.navigationController!.popToViewController(controller, animated: true)
                          //  vc.type = ""
                            break
                        }
                    }
                }else{
                    print("Data saving error")
                    self.showAlert(title: "Failure", msg: "Bad response from firestore")
                    self.HUD.hide(true)
                }
            })
        }
...