我有一个具有几种方法和属性的父类:
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"}
我可以这样做吗?
答案 0 :(得分:1)
只需使用String
的结果创建一个encode
…
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"}