Swift:这里不允许'var'没有getter/setter方法的声明



我试图在类的扩展上声明IBOutlet属性。但是它给出的错误是

不允许没有getter/setter方法的var声明

class ExampleView : UIView
{
}
extension ExampleView
{
    @IBOutlet var btn1, btn2 : UIButton // here I got error.
}
有没有人建议我做这件事的正确方法?

From Extensions -> Computed Properties in The Swift Programming Language

注意

扩展可以添加新的计算属性,但不能添加存储属性属性,或向现有属性添加属性观察器。


对twlkyao的评论的补充:这是我对DoubleabsoluteValue属性的实现

extension Double {
    var absoluteValue: Double {
        if self >= 0 {
            return self
        } else {
            return -self
        }
    }
}
// Simple test -> BOTH println() should get called.
var a = -10.0
if (a < 0) {
    println("Smaller than Zero")
}
if (a.absoluteValue > 5) {
    println("Absolute is > 5")
}

From The Swift Programming Language:

Swift中的扩展可以:

  • 添加计算属性和静态属性
  • 定义实例方法和类型方法
  • 提供新的初始化项
  • 定义下标
  • 定义和使用新的嵌套类型

这意味着你不能添加IBOutlets和其他存储属性。如果你真的想作弊,你可以创建全局变量或一个簿记对象,它允许你查询这些变量或对象,以便添加那些属性(并使它们成为计算属性)。

但这似乎违背了最佳实践。我只有在绝对没有其他办法的情况下才会这么做。

最新更新