我正在尝试创建如下通用方法:
private func map<T>(type:T, jsonString:String) -> T
{
do
{
let model = try Mapper<type>().map(JSONString: jsonString)!
return model
}
catch
{
Log.error("Failed to convert JSON jsonString to model object: \(jsonString)")
}
return EmptyModel()
}
但它导致编译错误: 错误:使用未声明的类型'type'
如何更改它以使用指定类型(类对象)和Mapper的通用值?
答案 0 :(得分:1)
您可以使用T
代替type
:
let model = try Mapper<T>().map(JSONString: jsonString)!
您可能想要更改方法签名,因此它返回T
的实例而不是类型T
本身:
private func map<T>(type: T.Type, jsonString: String) -> T
话虽如此,Swift已经拥有JSONDecoder
。它可能已经支持您要实施的内容。
let decoder = JSONDecoder()
let model = try decoder.decode(Model.self, from: data)