我对这个问题感到惊讶,我已经检查了。构造函数被调用了,开始时间的值也被更新了,但它从未被调用过。
class DesignatedLevels{
var _startTime:AppTime?
var _endTime:AppTime?
var startTime:String?
{
didSet{
_startTime = AppTime(time: self.startTime!)
}
}
var endTime:String?
{
didSet{
_endTime = AppTime(time: self.endTime!)
}
}
init(dataJS:[String:Any])
{
id = dataJS["id"] as? String
name = dataJS["name"] as? String
userName = dataJS["userName"] as? String
startTime = dataJS["startTime"] as? String ?? ""
endTime = dataJS["endTime"] as? String ?? ""
}
}发布于 2019-12-08 04:00:16
属性观察器仅在对象初始化后调用,这意味着init中的任何赋值都不会执行willGet、didGet、didSet或willSet中的代码。可以将赋值包装在init退出后立即执行的defer块中。例如:
init(dataJS:[String:Any])
{
defer {
id = dataJS["id"] as? String
name = dataJS["name"] as? String
userName = dataJS["userName"] as? String
startTime = dataJS["startTime"] as? String ?? ""
endTime = dataJS["endTime"] as? String ?? ""
}
}将导致执行属性观察器,因为defer块在对象被inited之后执行。
https://stackoverflow.com/questions/59229502
复制相似问题