有没有办法为计算属性实现子串getter和setter?

时间:2017-01-31 04:50:01

标签: swift

我正在尝试将计算属性用作Array对象,如下所示:

var arrayComputed: [String] {
    get {
        ...
    }

    set(newValue) {
        ...
    }
}

但是,现在我正在尝试在计算数组中设置值,我不知道应该如何实现它。我的setter设置假设它被赋予一个完整的数组来存储,但如果它被设置为这样呢?

arrayComputed[4] = "Some string"

这甚至会如何表现?

1 个答案:

答案 0 :(得分:0)

我做了一些挖掘并找到了解决方案。在计算数组属性上使用下标设置提供包含原始数组的newValue,但根据使用的下标更改相关索引。举例说明:

var actualArray: [String] = []

var computedArray: [String] {
    get {
        return actualArray
    }

    set(setTo) {
        actualArray = setTo
    }
}

computedArray.append("Hello")
computedArray.append("Matt")
computedArray.append("World")

// computedArray and actualArray are now both ["Hello", "Matt", "World"]

computedArray[1] = "Jacob"

// computedArray and actualArray are now both ["Hello", "Jacob", "World"]