0
シンプルなputリクエストがあり、サーバにデータを送信するのにAlamofireのParameters
タイプを使用しています。私はcodableを使用したいと思います。コード化可能な構造体をパラメータに変換する方法、またはJSONオブジェクトをパラメータとして使用するAlamofire要求を再構成する方法はありますか? Alamofireを使用してポストリクエストとプットリクエストを送信する最も効率的な方法は何ですか?AlamofireとCodableをputリクエストに使用する
ここは私がアラモファイアで今やっていることです。
func addProduct(product:MainProduct, completionHandler:@escaping ((JSON?, Error?)->Void)) {
let url = "INSERT_URL"
let headers: HTTPHeaders = [
"Content-Type": "application/json"
]
var parameters:Parameters = [:]
parameters["orderId"] = product.orderId
parameters["orderSize"] = product.orderSize
parameters["theOrderStatus"] = product.orderStatus
let purchDate = Int((product.purchaseDate.timeIntervalSince1970)*1000)
parameters["purchaseDate"] = purchDate
parameters["archived"] = false
Alamofire.request(url, method:.put, parameters: parameters, encoding: JSONEncoding.default, headers:headers).responseJSON {response in
switch response.result {
case .success(let value):
print ("finish")
let swiftyJson = JSON(value)
completionHandler(swiftyJson, nil)
case .failure(let error):
completionHandler(nil, error)
}
}
}
これは私たちの構造体です。
struct MainProduct:Codable{
var purchaseDate:Date
var orderId:String
var orderSize:Double
var orderStatus:OrderStatus?
var archived:Bool
private enum CodingKeys: String, CodingKey {
case purchaseDate
case orderId
case orderSize
case orderStatus = "theOrderStatus"
case archived
}
}
なぜ、「MainProduct」内の暗黙のうちにアンラップされたオプションとしてあなたの値の大部分を宣言していますか?意味がない。 –
だから私はちょうど '!'権利を取り除くべきだと言っているのですか? –
確かに。暗黙的にアンラップされたオプションは、正しく使用されないとエラーにつながる可能性があるため、非常に正当な理由がある場合を除いて使用しないでください。 –