错误?读取IBAction按钮内的变量

时间:2017-01-02 20:41:57

标签: ios swift uibutton ibaction

我有一个需要从变量中读取的IBAction。但是,当将变量放在viewDidLoad之外时,我会收到错误

  

不能在属性初始值设定项中使用实例成员'animal';属性初始化程序在'self'可用之前运行

我的代码如下。当我将变量移回viewDidLoad内部时,错误表明animalName是未声明的

var animalName = (String(format: "%03d", animal.speciesId!))

@IBAction func megaKeyIBO(_ sender: Any) {
    animalName = (String(format: "%03d", animal.speciesId!)) + "-merg"
}

override func viewDidLoad() {
    super.viewDidLoad()

    //variable was originally here before moving to top
    var animalName = (String(format: "%03d", animal.speciesId!))
}

2 个答案:

答案 0 :(得分:0)

发生这种情况是因为您试图在属性animal.speciesId之前初始化您的animalName!已初始化。一个简单的解决方法是:

var animalName: String!

@IBAction func megaKeyIBO(_ sender: Any) {
    animalName = (String(format: "%03d", animal.speciesId!)) + "-merg"
}

override func viewDidLoad() {
    super.viewDidLoad()

    // Initialize on viewDidLoad
    animalName = (String(format: "%03d", animal.speciesId!))
}

答案 1 :(得分:0)

animalName

中声明变量时,您正在使用变量viewDidLoad()作为局部变量

局部变量只能在它们声明的函数中工作,以便在您创建的按钮中使用animalName它必须声明为实例变量或在按钮的函数中