【问题标题】:How to print to more than 1 label using a for in loop如何使用 for in 循环打印到多个标签
【发布时间】:2021-04-21 01:12:39
【问题描述】:

我正在尝试在 Xcode 上快速编写我的第一个应用程序,但我卡住了!!

我有一本字典 - 我已经洗牌了 - 现在想按照洗牌的顺序将值打印到不同的标签。

我将举一个例子并尝试解释我所期望的结果。

    label1 : UILabel! 

label2:UILabel! 标签3:UILabel! label4 : UILabel!

动物 = [1:"cat", 2:"dog", 3:"snake", 4:"Mouse"]

洗牌的动物 = 动物。洗牌

// - 期望输出类似于 [2:"dog, 4:"mouse", 1:"cat", 3:"snake"

我试过... `Label1.text = shuffledAnimals[0] Label2.text = shuffledAnimals[1] Label3.text = shuffledAnimals[2] Label4.text = shuffledAnimals[3]'

//喜欢字典的索引..(这不起作用)不知道为什么??

还有没有办法把它放在一个循环中让它更干净?

任何帮助将不胜感激..谢谢

请注意.. 我想在数组上使用字典,因为我对键还有其他需求.. 它有 40 对,所以我的方法根本不实用

【问题讨论】:

    标签: swift xcode loops dictionary label


    【解决方案1】:

    在本例中,您使用的字典本质上是无序的。因此,与数组不同,您可以使用数组 [0] 和数组 [1] 等索引访问信息,字典的工作方式不同。无论您查看字典的顺序如何,每当您访问动物[1] 时,它始终是“cat”,因为那是“Cat”在字典中的地址。

    对于您正在尝试做的事情,有几个解决方案。一种快速而肮脏的方法是创建第二个数组(不是字典)。像这样的:

    let array : [Int] = [1,2,3,4]
    

    然后,您可以通过执行以下操作来打乱这个数组:

    array.shuffled()
    

    最后,使用数组的新(随机)顺序选择一个随机字典片段,如下所示:

    label1.text = animals[array[0]]
    

    只要数组中的数字与动物字典的第一部分相同,就可以正常工作。但请注意不要意外添加动物中没有的数字,因为这会导致错误。

    另外,这里提到了另一种解决方案,它使用不同且更高级的方法来声明字典:

    Dictionary returns consecutive/shuffled values when iterating in swift

    就将其放入循环而言,如果您使用第一个选项,则可以执行以下操作:

    for item in array {
        print(animals[array(item)]
    }
    

    这将调用数组中的每个项目,如果您已经调用了 .shuffled() 函数,这些项目将被打乱。

    【讨论】:

    • 感谢您的回答。由于其他原因,我确实需要保留字典,但我理解你的意思......说我在字典中制作了一组动物,那么每次循环时是否可以使用循环打印到不同的标签......对于示例数组 = ["snake","car","dog","mouse"] 所以循环 1 将把蛇打印到标签 1,循环 2 将把汽车打印到标签 2 等等......谢谢
    猜你喜欢
    • 1970-01-01
    • 2016-05-02
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多