Почему Swift Array нельзя изменить в свойствах обозревателя didSet?

Кажется, что массив Swift не будет проходить через didSet, почему?

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

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

1 ответ

Решение

willSet а также didSet не вызываются, когда переменная инициализируется впервые, так что это нормальное поведение и допустимо для всех типов свойств - наличие массива не имеет значения.

Попробуйте это на детской площадке:

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

intArray = []

intArray

последнее утверждение показывает, что intArray это [0].

Прочитайте 2-е примечание в Property Observers

Другие вопросы по тегам