@mownier Вот что я сделал прошлой ночью, и это сработало. Спасибо за ваш ответ.

я пытаюсь обновить базу данных в нескольких местах, используя
.updateChildValuesЯ получаю ошибку, указанную ниже. Как я могу решить эту проблему?

Завершение работы приложения из-за необработанного исключения «InvalidFirebaseData», причина: «(updateChildValues ​​:) Неверный путь в объекте. Путь (/ Payments / osGRNIZzbRWtllehAXbGJ5NtmRe2 / 1513178895/730890027) является предком (/ Payments / osGRNIZzbRWtllehAXbGJ5NtmRe2 / 1513178895/730890027 '').

      let timeStamp = String(Int(Date().timeIntervalSince1970))
        let paymentRef = self.random9DigitString()

        var finalBookingArray = [String: AnyObject]()
        for booking in self.bookingsFromQuery {

            let bookingForPayPeriod = DisbursePaymentData(

                numberOfHours: booking.NumberOfHours,
                bookingAmount: booking.BookingAmount,
                amountPaidToCleanerForBooking: booking.AmountPaidToCleanerForBooking ?? "",
                checkInDate: booking.checkInDate ?? "",
                checkOutDate: booking.checkOutDate ?? "",
                checkInTimeStamp: booking.checkInTimeStamp ?? "",
                checkOutTimeStamp: booking.checkOutTimeStamp ?? "",
                ratePriceClient: booking.RatePriceClient ?? "",
                rateNumberClient: booking.RateNumberClient ?? "",
                ratePriceCleaner: booking.RatePriceCleaner ?? "",
                rateNumberCleaner: booking.RateNumberCleaner ?? "",
                cancelledBy: booking.objectsUnderCancelledBy)

              let bookingCompleted = bookingForPayPeriod.convertDisbursePaymentDataToAnyObject()
                finalBookingArray[booking.BookingNumber] = bookingCompleted
        }

        let finalObject = DisbursePaymentData(
            payPeriodDateStartDate: self.fromDateString.text!,
            payPeriodEndDate: self.toDateString.text!,
            payPeriodTimeStampStartDate: String(describing: self.startDateTimeStamp),
            payPeriodTimeStampEndDate: String(describing: self.endDateTimeStamp),
            paymentRef: paymentRef)

      let objectComplete = finalObject.toAnyObj()
          let childUpdates = ["Payments/\(uid)/\(timeStamp)/\(paymentRef)" : objectComplete,
                              "Payments/\(uid)/\(timeStamp)/\(paymentRef)/\("bookings")" : finalBookingArray
        ] as [String : Any] 

    self.dbRef.updateChildValues(childUpdates)

схема:

Payments  
 -timeStamp
   -paymentRef


       payPeriodDateStartDate: date1
       payPeriodEndDate: - date 2
       payPeriodTimeStampStartDate: tstamp1
       payPeriodTimeStampEndDate:   tstamp2
       paymentRef: generate9DIgits
       Total:
       allfees: 
       netPay:
       //---->>the key:value pairs above represent objectComplete that I set above

      - bookings  // -> this is finalBookingArray that I set above
           booking1
             - hours: 
             - originalPriceOfBooking
             - amountPaidToCleanerForBooking
             -ratePriceClientContent
             -rateNumberClientContent
             -ratePriceCleanerContent
             -rateNumberCleanerContent
             -checkInDate:
             -checkOutDate:                    
             -checkInTimeStamp:
             -checkOutTimeStamp:
             -cancelledBy
               -timeStamp
                   values under timeStamp
 booking2
 bibscy14 дек. 2017 г., 13:43
@mownier Вот что я сделал прошлой ночью, и это сработало. Спасибо за ваш ответ.
 mownier14 дек. 2017 г., 04:35
еслиobjectComplete это словарь, просто добавьтеfinalBookingArray в этом. Затем удалитеbookings путь вchildValues.

Ответы на вопрос(0)

Ваш ответ на вопрос