お世話になっております。
あるプロトコルPを実装したクラスAのメソッドを呼び出したところ、エラーが発生しておりメソッドを実行できません。
何が問題なのか、解決するにはどうすれば良いか、ご教示いただければ幸いです。
環境
Xcode version: 11.0 (11A420a)
Swift version: 5
macOS version: Mojave 10.14.6(18G87)
エラー内容
Cannot convert value of type '(Item?) -> ()' to expected argument type '(A.T?) -> Void' (aka '(Optional<Item>) -> ()')
ソースコード
swift
1protocol P { 2 associatedtype T: Codable 3 static func get(request: Request, completion: @escaping(_ data: T?) -> Void) 4} 5 6extension P { 7 static func get(request: Request, completion: @escaping(_ data: T?) -> Void) { 8 let jsonData = getSomeJsonData() 9 do { 10 let data = try JSONDecoder().decode(T.self, from: jsonData) 11 completion(data) 12 } catch { 13 print(error.localizedDescription) 14 completion(nil) 15 } 16 } 17} 18 19class A: P { 20 typealias T = Item // ItemはCodableなstruct 21}
swift
1class B { 2 func printItem() { 3 A.get(request: request) { (data: Item?) in // エラー! Cannot convert value of type '(Item?) -> ()' to expected argument type '(A.T?) -> Void' (aka '(Optional<Item>) -> ()') 4 print(data) 5 } 6 } 7} 8 9
回答1件
あなたの回答
tips
プレビュー