我有一堆模型类,它们都需要实现NSCoding
协议。它们都使用ObjectMapper框架,因此可以在JSON数据中执行NSCoding
位。
现在我想要通常这样做,但我似乎无法创建继承的映射器实例:Mapper<Mappable> --> Mapper<MyMappableModelClass>
。
所以我需要做一个黑客才能在超类中完成所有操作。现在我的超级班需要知道所有非常糟糕的子类:
func encodeWithCoder(aCoder: NSCoder) {
var object: NSDictionary!
switch self {
case let u as User:
object = Mapper<User>().toJSON(u)
case let p as Profile:
object = Mapper<Profile>().toJSON(p)
//
// ...
//
default:
fatalError("Add your class to RestObject.swift")
}
aCoder.encodeObject(object, forKey: "json")
}
所以基本上如何在运行时创建Mapper<ChildClass>
实例,而不必在每个模型类中实现NSCoding
协议?