我有一个需要从变量中读取的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!))
}
答案 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
它必须声明为实例变量或在按钮的函数中