疑問点
以下の二つのソースコードですが
Aはコンパイルが通るのですが
Bはコンパイルが通りません。
swift
1JSONEncoder().encode(parameters)
ここでエラーが発生します。
このメソッドの引数はこれです
swift
1func encode<T>(_ value: T) throws -> Data where T : Encodable
この引数value
はEncodable
に準拠していれば何でもいいはずなので
Bのコードでも大丈夫だと思うのですが…
なぜでしょう…?
Swift
1//A 2 static func post<T: Encodable>(endpoint: Const.Endpoint, parameters: T, completion: @escaping (Data?, URLResponse?, Error?) -> Void) { 3 //省略 4 request.httpBody = try JSONEncoder().encode(parameters) 5 //省略 6 }
Swift
1//B 2 static func post(endpoint: Const.Endpoint, parameters: Encodable, completion: @escaping (Data?, URLResponse?, Error?) -> Void) { 3 //省略 4 request.httpBody = try JSONEncoder().encode(parameters) 5 //省略
発生している問題・エラーメッセージ
Cannot invoke 'encode' with an argument list of type '(Encodable)'
補足情報(FW/ツールのバージョンなど)
Xcode9.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/14 17:59
2018/07/14 18:35