如何将泛型结构发送到返回JSON的函数?
我试图创建一个func,它将一个struct作为参数并返回一个JSON数据。我正在制作它,因为我想避免重复,它将在几个地方使用,并使用不同的结构(即:用户,客户,联系......)
struct User : Codable {
let email: String
let password: String
}
func makeJSONData<T>(_ value: T) -> Data {
var jsonData = Data()
let jsonEncoder = JSONEncoder()
do {
jsonData = try jsonEncoder.encode(value)
}
catch {
}
return jsonData
}
通过使用makeJSONData,我收到一个错误:参数类型&#39; T&#39;不符合预期类型&#39; Encodable&#39;
let user = User(email: emailTextField.text!, password : passwordTextField.text!)
let user2 = makeJSONData(user)
答案 0 :(得分:1)
因为您没有定义T的类型,只需更改
makeJSONData<T>
到
makeJSONData<T: Codable>