【发布时间】:2018-01-12 12:26:08
【问题描述】:
例如,我有 4 个模型类,其中包含名为名称、值和数量的 3 个属性。如何制作一个接受我的模型类并相应工作的通用类。每个类都有另一个类的对象。导致树状结构
Class A {
//Its own properties
var name:String?
var value:Int?
var amounts:[Double?]
var listOfB:B?
}
Class B {
//Its own properties
var name:String?
var value:Int?
var amounts:[Double?]
var listOfC:C?
}
Class C {
//Its own properties
var name:String?
var value:Int?
var amounts:[Double?]
var listOfD:D?
}
Class D {
//Its own properties
var name:String?
var value:Int?
var amounts:[Double?]
}
到目前为止的代码
public class BaseModel<T: BaseModel> {
public var avg : Double?
public var id : String!
public var subModels :[T]
init(model: [T]) {
}
}
class GenericModel<T: BaseModel > { // Model for all subclasses
init(model: T) {
if let a = model as? ListOfYears {
model.avg = self.avg
model.id = self.id
model.subModel .init(model:self.subModels)
}
if let a = model as? listOfMonths {
model.avg = self.avg
model.id = self.id
model.subModels.init(model:self.subModels)
}
if let a = model as? ListOfWeeks {
model.avg = self.avg
model.id = self.id
model.subModels .init(model:ListOfYears.listOfMonths)
}
}
这里 ListOfYears、ListOfMonths、ListOfWeeks 是我的模型类
【问题讨论】:
-
这里需要
superclass,这里没有什么都没有generic。 -
listOfT: T? // T in [B, C, D]— 这不是列表,这是可选值