当我尝试创建以下 songs
数组时,出现错误:
"Cannot use instance member 'song' within property initializer; property initializers run before 'self' is available"
class ViewController: UIViewController {
struct Song {
let title: String
}
let song = Song(title: "A")
let songs = [song]
}
我可以将 let songs = [song]
移动到 viewDidLoad()
中,但是我无法从其他函数访问 songs
。我可以将 let
更改为 var
,然后将 viewDidLoad()
中的 songs
更改为我的歌曲数组,但随后当我希望它不可变时,我创建了一个可变数组。
我如何获得可用于所有函数的不可变歌曲数组,同时仍然让每首歌曲都以其自身的常量可用?
最佳答案
您可以通过在初始化期间创建歌曲数组来实现此目的。
class ViewController: UIViewController {
struct Song {
let title: String
}
let song = Song(title: "A")
let songs : [Song]
required init?(coder aDecoder: NSCoder) {
self.songs = [self.song]
super.init(coder: aDecoder);
}
}
关于swift - 如何在 Swift 中创建一个不可变的结构实例数组作为实例变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41900615/