Ios 在Swift中使用for创建字符串数组

Ios 在Swift中使用for创建字符串数组,ios,swift,Ios,Swift,我正在学习Swift,并发现了一个精彩的教程,其中解释了如何创建纸牌游戏。重点是我们使用了14张带有卡片图像的卡片,图像文件名为card0,card1。。。等等 因此,我们必须用这些文件名创建字符串数组。老师用硬编码来做这件事 var cardNamesArray:[String] = ["card1","card2","card3","card4","card5","card6","card7","card8","card9","card10","card11","card12","card1

我正在学习Swift,并发现了一个精彩的教程,其中解释了如何创建纸牌游戏。重点是我们使用了14张带有卡片图像的卡片,图像文件名为card0,card1。。。等等


因此,我们必须用这些文件名创建字符串数组。老师用硬编码来做这件事

var cardNamesArray:[String] = ["card1","card2","card3","card4","card5","card6","card7","card8","card9","card10","card11","card12","card13"]
我想用for in做这件事。但当我尝试这样做时:

for i in 0...13 {
var cardNamesArray:String = [String(format: "card%i", i)]
}
我在XCode中得到一个错误,因为。。。。“预期宣言”


你能告诉我哪里错了,或者是否有其他方法可以做到这一点。

这是解决方法。在for循环之前,首先需要初始化空字符串数组。然后从1迭代到13,而不是从0迭代到13,因为它将包含0。然后将字符串附加到数组中。您的字符串格式不正确,请注意在Swift中的格式设置方法

var cardNamesArray = [String]()

for i in 1...13 {
    cardNamesArray.append("card\(i)")
}

如果我正确理解了答案,这就是解决方案:

var cardNamesArray: [String] = []
for i in 0...13 {
    cardNamesArray.append("card\(i)")
}
您需要在程序中初始化数组一次(在填充之前),然后将其填充到
for
循环中

您还可以通过以下方式初始化阵列:

var cardNamesArray = [String](count: 14, repeatedValue: "")
这将为数组的14项分配内存,这比多次调用
.append()
要好

var cardNamesArray = [String](count: 14, repeatedValue: "")
for i in 0...13 {
    cardNamesArray[i] = "card\(i)"
}
使用map()可以编写以下代码:

var cardNamesArray = (0...13).map{"card\($0)"}

亲爱的@Kris Gellci非常感谢你。但我仍然有错误“预期下降”与“我在1…13{”为什么会发生这种情况?提前谢谢。你是在使用游乐场还是在实际项目中?我在实际项目中,你在使用哪个Xcode?我在最新的Xcode 7测试版中进行了测试,效果很好。你也可以清理项目,command+shift+k,然后在清理完成后重新构建。command+bI使用Xcode 6.4我尝试过清理,但是这对“老师用硬编码做的,比如…”没有帮助。你的老师应该被解雇。cardNamesArray应该是一个let。它是一堆固定名称。等等,你不需要
[Int]
,因为您没有尝试获取
Int
s的数组,而是
String
s。Int数组被映射到字符串数组。它将以长格式写入:
let intArray=[Int](0…13);var cardNamesArray=intArray.map{“card\($0)}
,但它也可以像我做的那样串在一起。哦,哦,我明白了。但是
[Int]
不是隐含的吗?
(0…13)
可以是什么其他类型?非常感谢。它工作了。你能解释一下[Int](0…13)是如何工作的吗?提前谢谢你。@Senator14
[Int](0…13)
创建了一个Int数组,即
[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
但正如@NRitH指出的,
[Int]
部分可以跳过,因此我将对其进行编辑。