У меня есть две функции, которые успешно извлекают целые числа из Firebase.Я хотел бы третью функцию, которая делает некоторое простое вычитание из целых чисел, собранных в первых двух функциях.
Однако я очень новичок в этом, поэтому не могу заставить его работать правильно.
Вывод двух функций, которые собирают данные из Firebase:
let pointsRedeemedAsInt:Int = Int(Points_Redeem)!
и
let sumOfPointsCompleted = self.challengeList.reduce(0) {$0 + $1.Points}
Мне нужна третья функция, которая выглядит какthis:
let pointsBalance = sumOfPointsCompleted - pointsRedeemedAsInt
Однако третья функция не распознает sumOfPointsCompleted и pointsRedeemedAsInt.
// Первая функция:
func loadPointsRedeemed() {
databaseReference = Database.database().reference()
let userID = Auth.auth().currentUser?.uid
databaseReference.child("Users").child(userID!).observe(DataEventType.value, with: { (snapshot) in
let value = snapshot.value as? NSDictionary
// let Points_Earn = value?["Points_Earned"] as? String ?? ""
let Points_Redeem = value?["Points_Redeemed"] as? String ?? ""
// self.Points_Earned.text = Points_Earn
self.Points_Redeemed.text = Points_Redeem
let pointsRedeemedAsInt:Int = Int(Points_Redeem)!
// Do any additional setup after loading the view.
}
)}
// Вторая функция:
func LoadPointsCompleted() {
self.challengeList.removeAll()
databaseReference = Database.database().reference()
let userID = Auth.auth().currentUser?.uid
let refChallenges = Database.database().reference(withPath: "Challenges").child(userID!).queryOrdered(byChild: "Status").queryEqual(toValue: "Complete")
refChallenges.observeSingleEvent(of: .value, with: { (snapshot) in
//if the reference have some values
if snapshot.childrenCount > 0 {
//clearing the list
self.challengeList.removeAll()
//iterating through all the values
for Challenges in snapshot.children.allObjects as! [DataSnapshot] {
//getting values
let challengeObject = Challenges.value as? [String: AnyObject]
let Points = challengeObject?["Points"] as! Int
//creating challenge object with model and fetched values
let challenge = pointsModel(Points: (Points as Int?)!)
//appending it to list
self.challengeList.append(challenge)
let sumOfPointsCompleted = self.challengeList.reduce(0) {$0 + $1.Points}
let sumOfPointsCompletedString = String(sumOfPointsCompleted)
self.Calc_Earned.text = sumOfPointsCompletedString
}
}
}
)}
// Третья функция (которая не работает):
func BalanceOfPoints(){
let balance = sum - pointsRedeemedAsInt
}
Ошибка:
Использование неразрешенных идентификаторов sum и pointsRedeemedAsInt
Кроме того, как мне убедиться, что все выполняется в правильном порядке?т. е. функция loadPointsCompleted должна сначала выполняться (и завершаться), затем следует функция loadPointsRedeemed и, наконец, функция BalanceOfPoints.