I have a 2 class , one of them inherited from base class
Base class
class Member : NSObject , Codable{
var Address : String?
var BriefDescription : String?
var City : String?
}
This is my inherited class :
class MemberSingUp : Member {
var Password : String?
var passwordAgain : String?
var referansNumber : String?
}
I created and object then load datas into it.
var newMember = MemberSingUp()
newMember.Address = "Adress"
newMember.BriefDescription = "BriefDescription"
newMember.City = "City"
newMember.Password = "123456"
Then I try to encode this model like
var memberJson : String = ""
do{
let jsonEncoder = JSONEncoder()
let jsonData = try jsonEncoder.encode(newMember)
memberJson = String(data: jsonData, encoding: String.Encoding.utf8)!
}catch{}
print(memberJson)
This memberJson
is {"Address":"Adress","BriefDescription":"BriefDescription","City":"City"}
.
Password
doesnt encode
So,Why inherited class object doesn't encoding?
UPDATE: According to Comment I use
required init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
let superdecoder = try container.superDecoder()
try super.init(from: superdecoder)
Password = try container.decode(String.self, forKey: .Password)
}
override func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(Password, forKey: .Password)
let superencoder = container.superEncoder()
try super.encode(to: superencoder)
}
It changes the json like :
{"Password":"1234567","super":{"Address":"Address","BriefDescription":"BriefDescription","City":"City"}}
How can I delete this super
key