Swift 类型“Response”不符合协议“Decodable”\“Encodable”
错误: 无法自动合成“可解码”,因为“T”不符合“可解码” 协议要求初始值设定项“initfrom:”的类型为“Decodable” 无法自动合成“可解码”,因为“T”不符合“可编码” 协议要求初始值设定项“initfrom:”的类型为“Encodable”Swift 类型“Response”不符合协议“Decodable”\“Encodable”,swift,codable,Swift,Codable,错误: 无法自动合成“可解码”,因为“T”不符合“可解码” 协议要求初始值设定项“initfrom:”的类型为“Decodable” 无法自动合成“可解码”,因为“T”不符合“可编码” 协议要求初始值设定项“initfrom:”的类型为“Encodable” 问题的原因是您将响应的两个属性声明为隐式展开的optionals IOU。编译器无法为IOU属性自动生成所需的可编码方法 然而,无论如何,没有必要做那些借条。如果它们是响应中始终存在的必需属性,则将它们设置为非可选属性。如果它们可能不见了,
问题的原因是您将响应的两个属性声明为隐式展开的optionals IOU。编译器无法为IOU属性自动生成所需的可编码方法 然而,无论如何,没有必要做那些借条。如果它们是响应中始终存在的必需属性,则将它们设置为非可选属性。如果它们可能不见了,可以随意使用吗?而不是 此外,Swift不是Objective-C。不需要让您的类型从NSObject继承。除非明确需要引用类型行为,否则还应该使用结构而不是类。您还应该使所有属性都不可变,除非您明确需要能够对它们进行变异
class ErrorObj: NSObject,Codable {
var numError:Int = 0
var DescriptionError = ""
}
class Response<T: Codable>: NSObject, Codable {
var error:ErrorObj!
var result:T!
func getResponse(errorObj:(ErrorObj)->Void,sucssesObj:(T)->Void) {
if error.numError != 0 {
errorObj(error)
} else{
sucssesObj(result)
}
}
}
您需要使ErrorObj也符合Codable.tnk的注释,这是我的类ErrorObj类ErrorObj:NSObject,Codable{var numeror:Int=0 var DescriptionError=}这是帮助我!!,非常感谢你!
struct ErrorObj: Codable {
let numError: Int
let description: String
}
struct Response<T: Codable>: Codable {
let error: ErrorObj
let result: T
func getResponse(errorObj: (ErrorObj) -> Void, successObj: (T) -> Void) {
if error.numError != 0 {
errorObj(error)
} else{
successObj(result)
}
}
}