xcode 从Swift类中选取随机元素

ibrsph3r  于 2022-12-24  发布在  Swift
关注(0)|答案(1)|浏览(137)

这是我的临时数据库模型

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
我准备了变量来存储值:
第一个月
并尝试用for循环来实现:

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

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

wz1wpwve

wz1wpwve1#

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

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: "")
}

相关问题