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

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

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

 class ExampleView : UIView { } extension ExampleView { @IBOutlet var btn1, btn2 : UIButton // here I got error. } 

请任何一个build议我正确的方法来做到这一点?

Extensions – > The Swift Programming LanguageThe Swift Programming Language Computed Properties

注意

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


除了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") } 

从Swift编程语言 :

Swift中的扩展可以:

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

这意味着你不能添加IBOutlets和其他存储的属性。 如果你真的想作弊,你可以创build全局variables或一个簿记对象,这将允许你查询这些variables或对象,以添加这些属性(并让它们是计算属性)。

但是这似乎是违背最佳做法的。 我只会做,如果没有其他的方式。