无法使用类型为'(String)'

时间:2015-10-21 15:04:17

标签: ios swift sprite-kit

获取错误“当我正在关注Neil North的iOS Swift游戏教程时,无法使用类型'(String)'的参数列表调用'enumerate'。这与1.2中的某种旧方法有关吗?有什么想法吗?

   convenience init(atlasName: String, tileSize: CGSize,
        tileCodes: [String]) {
            self.init(tileSize: tileSize,
                gridSize: CGSize(width: tileCodes[0].characters.count,
                    height: tileCodes.count))

            atlas = SKTextureAtlas(named: atlasName)

            for row in 0..<tileCodes.count {
                let line = tileCodes[row]

                // ERROR IS HERE
                for (col, code) in enumerate(line) {
                    if let tile = nodeForCode(code) {
                        tile.position = positionForRow(row, col: col)
                        if tile.name == "scenery" {
                            tile.position = CGPoint(x: tile.position.x, y: tile.position.y - (tileSize.height/2))
                        }
                        addChild(tile)
                    }
                }
            }
    }

2 个答案:

答案 0 :(得分:5)

是的,String不再是swift 2中集合类型的一部分。 您现在想要使用String fullName = "John Joe Doe"; String[] names = fullName.split(" "); if(names.length > 2) { String middelName = names[1]; System.out.println(middleName); } else { System.out.println("Please input full name"); }

有关此问题的更多信息,请参阅https://developer.apple.com/swift/blog/?id=30

答案 1 :(得分:3)

您应该在集合本身上调用enumerate。但是在Swift 2 String不再是一个集合 - 它有一个characters属性。

因此要迭代你的String,你应该在enumerate属性上调用characters

for (col, code) in line.characters.enumerate() {