Swift:插座名称的字符串连接

Swift: String Concatenation for Outlet names

我希望减少代码中的行数,我有很多与其值相对应的标签名称。我想知道是否有一种方法可以在 for-in 循环或类似的东西中设置这些值。现在我正在努力寻找一种连接标签名称以使它们动态的方法。我不确定我是否能够在 Swift 中做到这一点,有什么想法吗?谢谢

这个代码

LabelGiraffe1.text = "This is Giraffe 1"
LabelGiraffe2.text = "This is Giraffe 2"
LabelGiraffe3.text = "This is Giraffe 3"
LabelGiraffe4.text = "This is Giraffe 4"
LabelGiraffe5.text = "This is Giraffe 5"

更干净的东西,比如...

for number in 1...5 {
  LabelGiraffe + /(number).text = "This is Giraffe /(number)"
}

使用 IBOutletCollection。这实际上就像将所有插座放入一个数组中(我相信这就是它在后台所做的)。然后您可以遍历它们,或按索引访问它们,就像您尝试做的那样。

这里有更多信息:http://nshipster.com/ibaction-iboutlet-iboutletcollection/

制作一个标签数组并覆盖它们:

let giraffeLabels = [LabelGiraffe1, LabelGiraffe2, LabelGiraffe3, LabelGiraffe4, LabelGiraffe5] 

for (index, label) in enumerate(giraffeLabels) {
  label.text = "This is Giraffe \(index + 1)"
}

您还可以将 giraffeLabels 作为视图控制器的存储或计算 属性。