在斯威夫特安装Bool

ker*_*nic 0 setter swift

我正在使用这样的定制吸气剂

var currentShowLiked: Bool {
    get {
        return [some condition met] ? true : false
    }
    set {
        self.currentShowLiked = newValue
    }
}
Run Code Online (Sandbox Code Playgroud)

它工作正常.但是,我希望能够设置truefalse重新设置我的变量,但Swift强迫我实现一个setter,它不会产生任何警告,但在运行时如果我要改变我的变量的值,应用程序崩溃了没有明显的理由或理智的解释指向setter line with EXC_BAD_ACCESS (code=2...)和控制台中的消息warning: could not load any Objective-C class information. This will significantly reduce the quality of type information available.

我为什么这样做?

Loc*_*Loc 5

你处于递归上下文中.

你不能这样做:

    self.currentShowLiked = newValue // Recursive - StackOverflow error
Run Code Online (Sandbox Code Playgroud)

解决这个问题:

    private var _currentShowLiked : Bool

    var currentShowLiked: Bool {
        get {
            return [ some condition met on _currentShowLiked ] ? true : false
        }
        set {
            self._currentShowLiked = newValue
        }
    }
Run Code Online (Sandbox Code Playgroud)