我正在尝试使用for循环将一些数据附加到另一个数组。我的文件夹中只有5个项目,但它给了我6个项目。我不知道该怎么做我的for循环。
我的代码是这样的:
// TextureAtlas been populated by the Images folder
textureAtlas = SKTextureAtlas(named: "RockImages")
// Adds the images from the textureAtlas to the textureArray in order
for i in 0...textureAtlas.textureNames.count {
let Name = "rock_\(i).png"
textureArray.append(SKTexture(imageNamed: Name))
}
这是我打印出textureArray时得到的结果:
答案 0 :(得分:3)
这就是您不应手动编写索引范围的原因。
for i in 0...textureAtlas.textureNames.count
应该是
for i in 0..<textureAtlas.textureNames.count
如果您刚刚使用
,则可以完全避免发生此错误的可能性for i in textureAtlas.textureNames.indices
您已经拥有纹理名称。无需获取索引,并使用let name = "rock_\(i).png"
手动将它们转换为名称。只是做:
for name in textureAtlas.textureNames {
textureArray.append(SKTexture(imageNamed: Name))
}
您应该避免这种创建空数组的模式,并重复向其中添加元素。这是很多样板代码,它很慢,并且它需要你的数组是可变的,即使它不需要。请改用map(_:)
。
let textureArray = textureAtlas.textureNames.map(SKTexture.init(imageNamed:))