swift 4 - for for循环语法错误?

时间:2018-01-06 17:45:11

标签: ios swift loops

我正在使用spriteKit进行快速4游戏,并在编写下面显示的循环时遇到错误

override func sceneDidLoad()
    {
        super.sceneDidLoad()
        initialSize = size

        let numberWords = ["item1", "item2"]
        for items in numberWords {
            if defaults.integer(forKey: (items)) == 2{
                print(defaults.integer(forKey: (items)))
                print((items) , "still found")
              (items).texture = SKTexture(imageNamed: "square") //error "Value of type 'String' has no member 'texture'"

            }
        }

    }

游戏中有玩家必须找到的项目列表,我会在找到每个项目后更改其SKTexture。 print语句显示代码正常工作,但我还需要更改节点的纹理,并假设我可以添加此行

(items).texture = SKTexture(imageNamed: "square")

应循环遍历节点并更改纹理......

但我收到了该行的错误

"Value of type 'String' has no member 'texture'"

当我对项目纹理进行硬编码并且纹理按照它们应该更改时,以下代码工作正常,

item1.texture = SKTexture(imageNamed: "square")
item2.texture = SKTexture(imageNamed: "square")

所以我认为错误与循环代码的语法有关?我是初学者,这是我的第一篇文章,所以请原谅我的解释中的任何混淆。

更新

我认为,当我需要将名称用作字符串时,我想通过使用SKspriteNodes“名称”来实现它

override func sceneDidLoad()
    {
        super.sceneDidLoad()
        initialSize = size
        item1.name = "item1"
        item2.name = "item2"

        let numberWords = [item1, item2]

        for items in numberWords {
         let itemName = (items).name
            if defaults.integer(forKey: itemName!) == 2{
                print(defaults.integer(forKey: itemName!))
                     print((itemName!) , "still found")
            (items).texture = SKTexture(imageNamed: "square")

       }
    }

    }

1 个答案:

答案 0 :(得分:0)

您想要一个具有texture属性的项目数组,而不是字符串数组,例如

for item in [item1, item2] {
    // do whatever you want here, e.g.
    item.texture = SKTexture(...)
}

注意,item1item2附近没有引号。