Вызов запросов GraphQL AppSync и ожидание возврата результата Swift iOS

#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
    }
})