如何创建一个 Swift 变量,在某些条件下它可以返回不同的值,但通常它只返回自身?

Dou*_*ith 2 swift

假设我有一个名为的变量favoriteFood,它是一个String. 例如,它位于视图控制器上。

我希望它是一个可以获取和设置的普通变量。但是在非常特殊的情况下,我希望能够返回自定义值,例如:

var favoriteFood: String {
    if isTuesday {
        return "carrots"
    } else {
        return favoriteFood
    }
}
Run Code Online (Sandbox Code Playgroud)

但这会触发大量错误和警告,并且不再让我设置它。

我该怎么做?

Dáv*_*tor 5

创建一个私有的支持属性,并为favoriteFood. setter 应该将值设置为 backing 属性,而 getter 要么"carrots"在满足条件时返回,要么返回backing 属性的值。

private var _favoriteFood: String = ""

var favoriteFood: String {
    get {
        if isTuesday {
            return "carrots"
        } else {
            return _favoriteFood
        }
    }

    set {
        _favoriteFood = newValue
    }
}
Run Code Online (Sandbox Code Playgroud)