У меня есть настройка кнопки, чтобы она сохраняла запись CK на основе выбора пользователя из другой части пользовательского интерфейса. После вызова функции CKRecord сохраняется в переменной. Следующая операция, которую должен выполнить код, - это развернуть эту переменную и использовать ее для редактирования и сохранения записи CK. Проблема заключается в том, что функция loadChallengeRecord (), которую я вызываю первой, не первая операция, выполняемая при нажатии кнопки. Вместо этого сначала запускается функция развертывания, из-за чего программа выходит из функции развертывания, потому что запись равна нулю, а затем с опозданием вызывается функция loadChallengeRecord (). Вот пример:
func loadChallengeRecord() {
if let unwrapped = existingChallengeToDetails {
recordID = CKRecord.ID(recordName: unwrapped, zoneID: zone)
publicDatabase.fetch(withRecordID: recordID!) { (record, error) in
if record != nil {
self.currentChallenge = record
} else {
print("error fetching challenge record from server")
}
}
}
}
@IBAction func btnVote(_ sender: Any) {
// load record and save it to var existingChallengeToDetails
loadChallengeRecord()
if let unwrapped = existingChallengeToDetails { }// edit and save record
else { // error }
Что я делаю не так? Как я могу это исправить? Могу ли я указать приоритет выполнения этих функций?