从Swift类中随机选取一个元素



这是我的临时数据库模型

var categories: [Category] = [
Category(name: "X",
sign: [Sign(code: "X-1", name: "***", description: "", picture: ""),
Sign(code: "X-2", name: "***", description: "", picture: "")]),
Category(name: "Y",
sign: [Sign(code: "Y-1", name: "Yyy", description: "", picture: ""),
Sign(code: "Y-2", name: "yyy", description: "", picture: "")]),
Category(name: "Z",
sign: [Sign(code: "Z-1", name: "Zzz", description: "", picture: ""),
Sign(code: "Z-2", name: "ZZZ", description: "", picture: "")])
]

我需要从这个基数中获得任何类别的一个随机元素(而不是每个类别中的一个)并将其打印为sign.code

我准备了变量来存储值:

var RandomSign: Sign

并尝试使用for循环:

func randomSign() {
for categorie in categories {
randomSign = categorie.sign.randomElement()

但是,在结果中,我的循环从每个类别中生成随机元素,最后只保存最后一个类别中的随机元素。例如,我想打印"X-2"在我的控制台随机选择的值

为什么不选择一个随机类别,然后从这个随机类别中随机选择一个符号呢?

func randomSign() {
randomSign = categories.randomElement()!.sign.randomElement()!
}

如果任何数组为空,此代码将崩溃。如果randomSign是可选的会更安全,那么你可以这样做:

func randomSign() {
randomSign = categories.randomElement()?.sign.randomElement()
}

或者您可以退回到默认的符号:

func randomSign() {
randomSign = categories.randomElement()?.sign.randomElement() ?? Sign(code: "empty", name: "***", description: "", picture: "")
}

相关内容

最新更新