在Swift中使用API​​ Gateway AWSTask对象的正确方法是什么

时间:2019-04-05 20:11:39

标签: ios swift amazon-web-services aws-api-gateway aws-amplify

我在Github(this post)上被一位AWS iOS SDK开发人员引导到link,但恐怕我仍然不明白如何访问传递的Lambda响应,即通过API网关返回。

如果您阅读my iOS SDK usage question on this matter,将会看到我能够通过简单的iOS应用成功调用REST API。 Cloudwatch日志验证Lambda返回的响应正确。但是我不知道如何在result中访问这些值。

这是调用我的REST API的代码,该代码基于API Gateway文档中的"calc" REST API

@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是指用于Lambda函数传递响应的API网关模型;它不对数据执行任何转换。.只是将其发送到客户端。这是我的Empty.swift的样子:

import Foundation
import AWSCore

@objcMembers
public class Empty : AWSModel {

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

        return params
    }
}

有人可以在这里帮助我吗?

0 个答案:

没有答案