ios - 在 Swift 中创建带有边界的 Setter

标签 ios swift variables setter

在类中,我使用一个变量,例如百分比,并且我希望它有一些边界。例如:我想要0到100之间的值。如果该值设置为105,那么存储的值将为100。

我首先实现了这个:

var percentage: Int{
    set{
        if (newValue < 0) {
            self.percentage = 0
        } else if (newValue > 100) {
            self.percentage = 100
        } else {
            self.percentage = newValue
        }
    }
}

不幸的是,由于 setter 上的无限循环,我收到 EXC_BAD_ACCESS 错误。在寻找解决方案时,我发现了两种不同的方法:

使用两个变量的第一种方法:

var percentageWithBoundaries: Int

var percentageWithoutBoundaries: Int{
    get{
        return percentageWithBoundaries
    }
    set{
        if (newValue < 0) {
            percentageWithBoundaries = 0
        } else if (newValue > 100) {                     
            percentageWithBoundaries = 100
        } else {
            percentageWithBoundaries = newValue
        }
    }
}

使用 didSet 的第二种方法:

var percentage: Int{
    didSet{
        if (percentage < 0) {
            percentage = 0
        } else if (percentage > 100) {
            percentage = 100
        }
    }
}

我认为第二种方法更好:更简洁,更容易理解。

我想知道是否有更好的做法,或者是否应该首选这两种做法之一。

谢谢!

最佳答案

var percentage: Int{
    didSet{
        if (percentage < 0) {
            percentage = 0
        } else if (percentage > 100) {
            percentage = 100
        }
    }
}

这种方法最好是根据条件设置变量。

关于ios - 在 Swift 中创建带有边界的 Setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36689240/

相关文章:

javascript - jQuery 在移动设备上使用 skrollr 自动滚动?

ios - 使用从 NSURLConnection 检索到的数据填充 UITableView

arrays - 追加包含其他类数组的类数组

shortcut - 我们还不能在 Playground 文件中使用占位符快捷方式

java - 找不到符号 - 变量

variables - Ansible - 更新 vars_file 中的变量并在剧本中再次调用它不起作用

ios - Phonegap 确认提醒

ios - 使用AVPlayer播放时如何将音频连接到蓝牙

ios - 如何检测设备(iphone)是否有物理主页按钮?

java - 语法 "variable = variable = variable;"发生了什么?