首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在init中分配属性时,属性观察器不起作用

在init中分配属性时,属性观察器不起作用
EN

Stack Overflow用户
提问于 2019-12-08 03:35:34
回答 1查看 56关注 0票数 0

我对这个问题感到惊讶,我已经检查了。构造函数被调用了,开始时间的值也被更新了,但它从未被调用过。

代码语言:javascript
复制
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   ?? ""



    }
}
EN

回答 1

Stack Overflow用户

发布于 2019-12-08 04:00:16

属性观察器仅在对象初始化后调用,这意味着init中的任何赋值都不会执行willGetdidGetdidSetwillSet中的代码。可以将赋值包装在init退出后立即执行的defer块中。例如:

代码语言:javascript
复制
    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之后执行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59229502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档