オブジェクトをエンコードする一連の API 関数を作成し (Struct
に準拠する を使用Codable
)、結果の JSON データ オブジェクトをサーバーに投稿し、JSON 応答をデコードします。すべて正常に動作します。特に、Swift 4.2 の JSON 解析の新しい方法に満足しています。ただし、さまざまなメソッド呼び出しでコードを再利用できるように、コードをリファクタリングしたいと考えています。そうすると、本当に厄介なエラーが発生します。
func encodeRequestJSON(apiRequestObject: Codable) -> Data {
do {
let encoder = JSONEncoder()
let jsonData = try encoder.encode(apiRequestObject)
let jsonString = String(data: jsonData, encoding: .utf8)
print(jsonString)
} catch {
print("Unexpected error")
}
return jsonData!
}
これはエラーメッセージです:
Cannot invoke 'encode' with an argument list of type '(Codable)'
タイプを Codable から Encodable に変更しようとしましたが、メッセージのタイプ (Encodable) を除いて同じエラーが発生します。何かアドバイス?私のフォールバックは、現在の ViewController でデータをエンコードし、次に HTTPPost 関数を呼び出してから、VC でデコードすることです。しかし、それは本当に不格好です。