【问题标题】:Why Swift Array cannot be altered in property observer didSet?为什么不能在属性观察者 didSet 中更改 Swift 数组?
【发布时间】:2014-09-18 09:51:38
【问题描述】:

好像Swift的Array不会通过didSet,为什么?

var intArray: [Int] = [] {
    didSet {
        intArray += [0]
    }
}

if intArray.count == 0 {
    println("Why is intArray not being altered?")
}

【问题讨论】:

    标签: arrays swift observers didset


    【解决方案1】:

    willSetdidSet 在第一次初始化变量时被调用,所以这是正常行为,并且对所有属性类型都有效 - 作为数组没有区别。

    在操场上试试这个:

    var intArray: [Int] = [] {
        didSet {
            intArray += [0]
        }
    }
    
    intArray = []
    
    intArray
    

    最后一条语句显示intArray是[0]。

    阅读Property Observers中的第二条注释

    【讨论】:

    • 好的,但是如果我想在数组更新时对其进行排序怎么办?我试过didSet 但它崩溃了!!请问有什么建议吗?
    猜你喜欢
    • 2020-03-03
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    • 2019-12-20
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    相关资源
    最近更新 更多