swift: Как я могу установить тело в запросе PUT в сгенерированном iOS SDK для aws-api-gateway? - PullRequest
0 голосов
/ 22 февраля 2019

Вот код запроса PUT, в который я хочу отправить tokenId в API в виде JSON: Как я могу это сделать?

 public func paymentPut(tokenId: String) -> AWSTask<AnyObject> {
    let headerParameters = [
        "Content-Type": "application/json",
        "Accept": "application/json",

        ]

    let queryParameters:[String:Any] = [:]

    let pathParameters:[String:Any] = [:]

    return self.invokeHTTPRequest("PUT", urlString: "***", pathParameters: pathParameters, queryParameters: queryParameters, headerParameters: headerParameters, body: nil, responseClass: nil)
}

Я попытался установить тело, как это, но мое приложение падает:

    let body: [String:Any] = ["token": tokenId]

После сбоя ошибка: *** Завершение приложения из-за необработанного исключения 'NSInvalidArgumentException', причина: '+ [_ TtGCs26_SwiftDeferredNSDictionarySSP__ JSONKeyPathsByPropertyKey]: нераспознанный селектор 100 отправлен в класс

1 Ответ

0 голосов
/ 23 февраля 2019

Хорошо, так что это может помочь кому-то в будущем.Вот как я решил: 1) создайте модель данных AWS

import Foundation   
import AWSCore
@objcMembers
public class TESTPaymentPUT : AWSModel {

var token: String?

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

    return params
}
}

2) Установите эти значения в вашем контроллере представления:

let tokenBody = TESTPaymentPUT()
tokenBody?.token = token

3) Вызовите метод API и установитеtokenBody в качестве параметра в вашем контроллере представления:

API.client.paymentPut(body: tokenBody).continueOnSuccessWith { (_) -> Any? in
                return nil
            }

4) Измените метод API:

public func paymentPut(body: TESTPaymentPUT?) -> AWSTask<AnyObject> {
    let headerParameters = [
        "Content-Type": "application/json",
        "Accept": "application/json",

        ]

    let queryParameters:[String:Any] = [:]

    let pathParameters:[String:Any] = [:]

    return self.invokeHTTPRequest("PUT", urlString: "***", pathParameters: pathParameters, queryParameters: queryParameters, headerParameters: headerParameters, body: body, responseClass: nil)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...