ios - 由于打印语句重复 4 次,firestore 文档中的字段值增加了错误的数字
问题描述
所以我的目标是在购买机票时始终具有适当的增量值。我有一个奇怪的错误,当我通过增加它来更新字段值时,由于打印语句中的重复,每次我运行新的模拟时,它都会增加错误的数字,但是如果我要更新在相同的新模拟中再次设置值,之后每次都会增加适当的值。
我用来增加的值是一个标签文本,它依赖于一个UIStepper
值。
这是我用来更新和增加这个值的完整函数:
func paymentAuthorizationViewController(_ controller: PKPaymentAuthorizationViewController, didAuthorizePayment payment: PKPayment, handler completion: @escaping (PKPaymentAuthorizationResult) -> Void) {
guard let count = guestNumberCount.text else { return }
guard let labelAsANumber = Int64(count) else { return }
guard let user = Auth.auth().currentUser else { return }
let dfmatter = DateFormatter()
dfmatter.dateFormat = "EEEE, MMMM d yyyy, h:mm a"
let dateFromString = dfmatter.date(from: actualDateOfEvent.text ?? "")
let dateStamp: TimeInterval = dateFromString!.timeIntervalSince1970
let dateSt: Int = Int(dateStamp)
getStudentID { (studid) in
if let id = studid {
self.db.document("student_users/\(user.uid)/events_bought/\(self.navigationItem.title!)").setData(["event_name": self.navigationItem.title!, "event_date": self.actualDateOfEvent.text ?? "", "event_cost": self.actualCostOfEvent.text ?? "", "for_grades": self.gradeOfEvent , "school_id": id, "expiresAt":dateSt, "isEventPurchased": true, "time_purchased": Date()], merge: true) { (error) in
if let error = error {
print("There was an error trying to add purchase info to the database: \(error)")
} else {
print("The purchase info was successfully stored to the database!")
}
}
}
}
getDocumentIDOfSelectedEvent { (eventidentification) in
if let eventid = eventidentification {
self.getSchoolDocumentID { (docID) in
if let doc = docID {
self.db.document("school_users/\(doc)/events/\(eventid)/extraEventInfo/TicketCount").updateData(["ticketsPurchased": FieldValue.increment(Int64(labelAsANumber))]) { (error) in
if let error = error {
print("There was an error updating the number of tickets: \(error)")
} else {
print("Number of tickets purchased succesfully updated!")
print(labelAsANumber)
}
}
}
}
}
}
performSegue(withIdentifier: Constants.Segues.fromTicketFormToPurchaseDetails, sender: self)
completion(PKPaymentAuthorizationResult(status: .success, errors: []))
}
除了打印语句之外,我无法真正找出函数中的任何问题,无论是在我的整个项目中,还是在这种情况下。在print(labelAsANumber)
语句中,它打印了标签文本的正确值(步进值),但它打印了四次,这导致了问题。如何防止重复打印语句和整体不正确的数字递增?