【发布时间】:2017-03-15 14:22:18
【问题描述】:
我有一个像这样的基础父对象:
class A: Mappable {
var x: String!
...
}
还有它的两个孩子:
class Child1: A {
var y: Int!
...
}
class Child2: A {
var z: String?
}
这一切都很好而且很花哨,但是当我有一个表示从 A 继承的对象数组的对象时会发生什么,例如:
class Wrapper: Mappable {
var objcs: [A]? // A will always be either Child1 or Child2, never A directly
}
我该如何处理这种情况? (小细节,我还需要能够使用 Obj-c 中的 Wrapper,没有添加注释和 NSObject 继承以避免冗长)
【问题讨论】:
-
真正的问题是什么?
-
问题在于库不会将 Wrapper 中的对象识别为可能的 Child1 或 ChildB 类型,而是将它们全部转换为 A。
-
为什么会有问题?这是标准的面向对象编程。查找继承和覆盖
-
我认为你没有理解我的问题 JeremyP。我的问题不是缺乏 OO 编程知识,而是缺乏关于在 ObjectMapper 中正确投射对象的挂钩位置的知识。我为任何可能感兴趣的人添加了答案。
-
如果您必须查看对象内部才能找出它是什么,那就是代码异味。您的设计可能需要重新审视。
标签: swift objectmapper