2

オブジェクトをエンコードする一連の 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 でデコードすることです。しかし、それは本当に不格好です。

4

1 に答える 1