获取错误“当我正在关注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)
}
}
}
}
答案 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() {