我有一个需要从变量中读取的IBAction。但是,当将变量放置在viewDidLoad
之外时,我会收到错误
不能在属性初始化器中使用实例成员“动物”;属性初始化器在“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!))
}
发布于 2017-01-02 20:51:01
发生这种情况是因为您试图在属性animalName之前初始化您的animal.speciesId!已经初始化了。一个简单的解决办法是:
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!))
}
发布于 2017-01-02 20:51:45
在animalName
中声明变量时,使用变量viewDidLoad()
作为局部变量。
局部变量只在声明的函数中工作,以便在您创建的按钮中使用animalName
,必须将其声明为实例变量或按钮的函数。
https://stackoverflow.com/questions/41433042
复制相似问题