【问题标题】:Swift Generic approach to NSCodingNSCoding 的 Swift 通用方法
【发布时间】:2015-11-17 20:20:44
【问题描述】:

我有一堆模型类,都需要实现NSCoding 协议。它们都使用 ObjectMapper 框架,因此可以对 JSON 数据执行 NSCoding 位。

现在我想通用地执行此操作,但我似乎无法创建继承的映射器实例:Mapper<Mappable> --> Mapper<MyMappableModelClass>

所以我需要做一个 hack 才能在超类中完成这一切。现在我的超类需要知道所有子类,这是非常糟糕的设计:

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&lt;ChildClass&gt; 实例,而不必在我的每个模型类中实现NSCoding 协议?

【问题讨论】:

    标签: ios swift oop generics inheritance


    【解决方案1】:

    我们在这里遇到了同样的问题,尝试将我们的解决方案提供给relative ObjectMapper issue conversation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-08
      相关资源
      最近更新 更多