鉴于以下课程......
final class MyClass : Codable {
var someDate:Date
}
这个扩展就可以了......
extension Decodable{
static func decodeFromJson(_ json:Data?) -> Self?{
return nil // Implementation not needed for example
}
static func decodeFromJson(_ json:Data?, withDateFormat dateFormat:String) -> Self?{
return nil // Implementation not needed for example
}
}
直接针对MyClass
...
extension MyClass{
static func decodeFromJson(_ json:Data?) -> Self?{
let dateFormat = "yyyy-MM-dd"
// This line won't compile
// return MyClass.decodeFromJson(json, withDateFormat:dateFormat)
// This line compiles just fine
return decodeFromJson(json, withDateFormat:dateFormat)
}
}
上面没有编译的行会给你这个错误
Cannot convert return expression of type 'MyClass?' to return type 'Self?'
我发现后者有效,这是一次意外。我以为我是DOA。
那么为什么后者起作用而前者不起作用呢?