“无法推断当前上下文中闭包参数'b'的类型”。调用函数时出现此错误

Raj*_*ana 4 generics xcode ios swift swift3

调用函数时出错。

func hitService<T : Codable>(urlS: String , completion : @escaping (T) -> Void) {
    
    guard let url = URL(string: urlS) else {return}
    
    
    let session = URLSession.shared
    
    let _ = session.dataTask(with: url) { dt, resp, err in
        
        
        let decoder = JSONDecoder()
        
        if let d = dt {
            
            do {
                let obj = try decoder.decode(T.self, from: d)
                completion(obj)
            } catch {print(error.localizedDescription)}
        }
    }.resume()
}
Run Code Online (Sandbox Code Playgroud)

调用这样的函数并出现错误。我也尝试过在 <> 内传递数据类型。

 hitService(urlS: urlStr) { b in
        
        
        
  }
Run Code Online (Sandbox Code Playgroud)

Ash*_*lls 8

泛型函数依赖于您在调用它时指定类型,以便它可以推断它使用的类型。

在这种情况下,您需要提供闭包参数的类型,b

hitService(urlS: urlStr) { (b: MyType) in
    
}
Run Code Online (Sandbox Code Playgroud)