如何通过Swift中的for循环将数组的所有元素追加到标签

时间:2018-05-09 06:31:17

标签: arrays swift label

我有一个数组weekOneExerciseArray,里面有4个字符串。我有一个标签,我想分配每个字符串,每个都在一个新行。目前,在尝试编写更优化的版本之前,我只编写了各个数组元素。但是我得到了

  

无法下标类型' [String]'索引类型为

exerciseString = "\(exerciseString)\n (weekOneExerciseArray[exerciseCount])"; }行。

我已经尝试了很多变种来让这个工作但没有运气。我会非常感谢任何帮助!

let weekOneExerciseArray = ["Reverse Crunch", "Crunch", "Oblique Crunch", "Rope Crunch"];

//Week 1: 4 exercises
exerciseTextLabel.text = "\(weekOneExerciseArray[0])\n\(weekOneExerciseArray[1])\n\(weekOneExerciseArray[2])\n\(weekOneExerciseArray[3])";


var exerciseString = "";

for exerciseCount in weekOneExerciseArray
{
    exerciseString = "\(exerciseString)\n\(weekOneExerciseArray[exerciseCount])";
}

exerciseTextLabel.text = exerciseString;

1 个答案:

答案 0 :(得分:3)

在您尝试使用字符串作为索引访问数组元素的for-in中获取错误的原因是

for exerciseCount in weekOneExerciseArray
{
    exerciseString = "\(exerciseString)\n\(weekOneExerciseArray[exerciseCount])";
}

此时,exerciseCount是一个字符串,但不是一个整数,所以你应该做的是:

for i in 0..<weekOneExerciseArray.count {
    exerciseString = "\(exerciseString)\n\(weekOneExerciseArray[i])"
}

你会很高兴。

更好的解决方案

然而,我强烈建议您采用以下方法:

您可以使用joined方法通过加入其元素来对weekOneExerciseArray进行分组,以生成所需的连接:

let weekOneExerciseArray = ["Reverse Crunch", "Crunch", "Oblique Crunch", "Rope Crunch"]

let concatenatedString = weekOneExerciseArray.joined(separator: "\n")
print(concatenatedString)
/*
 Reverse Crunch
 Crunch
 Oblique Crunch
 Rope Crunch
 */

exerciseTextLabel.text = concatenatedString