我有一个带有几个方法和属性的父类:
class Animal {
var var1: ...
var var2: ...
func func1() {}
func func2() {}
}
儿童班:
class Dog: Animal, Codable {
var name = ""
}
我需要向父类添加一个方法,该方法将返回子类的JSONEncoder().encode
的结果。类似于:
let dog = Dog()
dog.name = "Bob"
let jsonString = dog.jsonString() // {"name":"Bob"}
我能做这个吗?
只需使用encode
…的结果创建一个String
extension Encodable {
func jsonString() -> String {
let data = try! JSONEncoder().encode(self)
return String(data: data, encoding: .utf8)!
}
}
let dog = Dog()
dog.name = "Bob"
dog.jsonString()
// {"name":"Bob"}