当我尝试使用以下命令在多个位置更新数据库时
.updateChildValues
,我收到下面列出的错误。我怎么解决这个问题?
由于未捕获的异常“InvalidFirebaseData”而终止应用程序,
原因:'(updateChildValues:)对象中的路径无效。小路
(/Payments/osGRNIZzbRWtllehAXbGJ5NtmRe2/1513178895/730890027) 是一个
的祖先
(/付款/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)
schema:
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