Как правильно работать с объектами API Gateway AWSTask в Swift? - PullRequest
0 голосов
/ 05 апреля 2019

Я был направлен на этот пост одним из разработчиков AWS iOS SDK на Github ( ссылка ), но я боюсь, что все еще не понимаю, как получить доступ ксквозной лямбда-ответ, который возвращается через API-шлюз.

Если вы прочитаете мой вопрос об использовании iOS SDK по этому вопросу , вы увидите, что я могу успешно вызывать мой REST API черезмое простое приложение для iOS.Журналы Cloudwatch подтверждают, что Lambda возвращает правильный ответ.Но я не знаю, как получить доступ к этим значениям в result.

Вот мой код, который вызывает мой REST API, который основан на "calc" REST API , представленном вДокументация по API Gateway.

@IBAction func userInvokeApi(_ sender: UIButton) {
    print("You clicked invoke api...")
    let client = SVTLambdaGateClient.default()
    client.calcGet(operand2: "3", _operator: "+", operand1: "5").continueWith{ (task: AWSTask?) -> AnyObject? in
        if let error = task?.error {
            print("Error occurred: \(error)")
            return nil
        }

        if let result = task?.result {
            // Do something with result
            print("The raw result is... \(result)")
        }

        return nil
    }
}

Да, я понимаю, что все, что я делаю, - это распечатка адреса result.Все, что я пытался напечатать значения, терпит неудачу!

ОБНОВЛЕНИЕ Когда я пытаюсь result.responseData, как рекомендуется ниже, я получаю следующее сообщение:

Value of type 'Empty' has no member 'responseData'

Empty относится к модели API-шлюза для сквозных ответов от функции Lambda;он не выполняет преобразование данных .. просто отправляет их клиенту.Вот как выглядит мой Empty.swift:

import Foundation
import AWSCore

@objcMembers
public class Empty : AWSModel {

    public override static func jsonKeyPathsByPropertyKey() -> [AnyHashable : Any]!{
        var params:[AnyHashable : Any] = [:]

        return params
    }
}

Кто-нибудь может мне здесь помочь?

...