i have this protocols and classes conforms to those protocols like below
protocols :
import ObjectMapper
public protocol People: Mappable {
var name: String { get set }
var age: Int { get set }
var car: Car { get set }
}
extension People {
public mutating func mapping(map: Map) {
name <- map["name"]
age <- map["age"]
car <- map["car"]
}
}
public protocol Car: Mappable {
var type: String { get set }
var year: Int { get set}
var addons: [Addon] { get set}
}
extension Car {
public mutating func mapping(map: Map) {
type <- map["type"]
year <- map["year"]
addons <- map["addons"]
}
}
public protocol Addon: Mappable {
var autoStart: Bool { get set }
}
extension Addon {
public mutating func mapping(map: Map) {
autoStart <- map["auto_start"]
}
}
classes :
public class People: Mappable, TestPod.People {
public var name: String = ""
public var age: Int = 0
public var address: String = ""
public var copyOfMan: TestPod.People? = nil
public var car: TestPod.Car
required public init?(map: Map) {
car = Car(type: "mazda", year: 2010)
}
public init(name: String, age: Int, address: String, car: Car) {
self.name = name
self.age = age
self.address = address
self.car = car
copyOfMan = self
}
}
public class Car : Mappable, TestPod.Car {
public var type: String = ""
public var year: Int = 0
public var addons: [TestPod.Addon] = []
required public init?(map: Map) {
}
public init(type: String, year: Int) {
self.type = type
self.year = year
addons = [Addon(autoStart: true)]
}
}
public class Addon : Mappable, TestPod.Addon {
public var autoStart: Bool = false
required public init?(map: Map) {
}
public init(autoStart: Bool) {
self.autoStart = autoStart
}
}
What you did:
let hari = People(name: "Abdallah", age: 33, address: "Riyadh", car: Car(type: "Mazda", year: 2010))
let newHari: People = Helper.testMan(hari)
then:
public class Helper {
public static func testMan<T: People>(_ man: People) -> T {
let string = man.toJSON()
print(string)
do {
let data = try JSONSerialization.data(withJSONObject: man.toJSON(), options: [.prettyPrinted])
print(data)
}
catch {
print("error")
}
return T(JSON: string)!
}
}
What you expected:
I exepected something like json string with all properties including cars and addons:
Your model:
i have this protocols and classes conforms to those protocols like below
protocols :
classes :
What you did:
then:
What you expected:
I exepected something like json string with all properties including
cars
andaddons
:What you got:
whats is wrong with this code ?