当我尝试创建下面的create table table_a
(
user_id number,
trx_no number
);
create table table_b
(
user_id number,
trx_no number
);
create table table_c
(
user_id number,
trx_no number
);
insert into table_a (trx_no, user_id) values (1, null);
insert into table_b (trx_no, user_id) values (1, null);
insert into table_c (trx_no, user_id) values (1, null);
数组时,我收到错误:
“无法在属性初始值设定项中使用实例成员'歌曲';属性初始化程序在'self'可用之前运行”
songs
我可以将class ViewController: UIViewController {
struct Song {
let title: String
}
let song = Song(title: "A")
let songs = [song]
}
移到let songs = [song]
,但我无法从其他功能访问viewDidLoad()
。我可以将songs
更改为let
,然后将var
中的songs
更改为我的歌曲数组,但是当我希望它变为不可变时我创建了一个可变数组
如何为所有功能提供不可变的歌曲数组,并且每首歌曲仍然可以使用自己的常量?
答案 0 :(得分:1)
您可以通过在初始化期间创建歌曲数组来实现此目的。
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);
}
}
答案 1 :(得分:1)
鉴于song
是常量,一个简单的解决方案就是将其设为static
属性:
class ViewController: UIViewController {
struct Song {
let title: String
}
static let song = Song(title: "A")
let songs = [song]
}
如果您需要在任何实例方法中访问它,您只需说ViewController.song
。
答案 2 :(得分:0)
要制作歌曲类型数组并添加歌曲,您应该:
var songs = [Song]()
在视图上加载:
songs.append(song)
所以它会是:
class ViewController: UIViewController {
struct Song {
let title: String
}
let song = Song(title: "A")
var songs = [song]
override func viewDidLoad() {
super.viewDidLoad()
songs.append(song)
}
}
另一种保持不可改变的选择:
let unmutableSongs: [Song] = [Song(title: "A")]