#ios #swift #aws-appsync
#iOS #swift #aws-appsync
Вопрос:
Я бы хотел, чтобы мое приложение подождало, пока результаты запроса не вернутся. Итак, в приведенном ниже блоке я пытаюсь сделать то, что, если запрошенный запрос возвращает пустые результаты, я бы хотел вызвать «self.insertCreditRecord». Кто-нибудь это делал? appSyncClient?.fetch(запрос: SelectQuery, cachePolicy: .fetchIgnoringCacheData) {(результат, ошибка) в if error != nil { печать (ошибка?.localizedDescription ?? «») возврат }
result?.data?.listTranscriberConfigs?.items!.forEach {
if let credit = Double($0?.value ?? "0.0")
{
UserCredit.id = ""
UserCredit.id = $0?.id ?? ""
UserCredit.email = $0?.param ?? ""
UserCredit.credit = credit
}
if UserCredit.id == "" {
self.insertCreditRecord(email: email)
}
print(($0?.param)! " " ($0?.value)!)
}
}
Ответ №1:
вам просто нужно использовать обработчик завершения в вашей функции, чтобы игнорировать возврат null
Например
typealias CompletionHandler = (success:Bool) -> Void
func downloadFileFromURL(url: NSURL,completionHandler: CompletionHandler) {
// download code.
let flag = true // true if download succeed,false otherwise
completionHandler(success: flag)
}
// How to use it.
downloadFileFromURL(NSURL(string: "url_str")!, { (success) -> Void in
// When download completes,control flow goes here.
if success {
// download success
} else {
// download fail
}
})