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

时间:2014-06-09 06:35:53

标签: ios swift

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

  不允许使用getter / setter方法的

'var'声明

class ExampleView : UIView
{

}

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

}

请有人建议我这样做吗?

2 个答案:

答案 0 :(得分:9)

来自Extensions - > Computed Properties

中的The Swift Programming Language
  

请注意

     

扩展可以添加新的计算属性,但它们无法添加存储   属性,或将属性观察者添加到现有属性。


回应twlkyao的评论:这是我对absoluteValue的{​​{1}}属性的实现

Double

答案 1 :(得分:2)

来自The Swift Programming Language

  

Swift中的扩展程序可以:

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

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

但它似乎违背了最佳做法。如果没有别的办法,我只会这样做。