for循环中的额外数据
Extra data in a for loop
我正在尝试执行 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 时得到的结果:
解决眼前的问题
这就是您不应该手动写入索引范围的原因。
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:))
我正在尝试执行 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 时得到的结果:
解决眼前的问题
这就是您不应该手动写入索引范围的原因。
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:))