Iterate through a String Swift 2.0

為{幸葍}努か 提交于 2019-11-26 11:15:51

问题


I am trying to do a very simple piece of code in Swift playgrounds.

var word = \"Zebra\"

for i in word {
  print(i)
}

However, I always get an error on line 3.

\'String\' does not have a member named \'Generator\'

Any ideas on why this doesn\'t work? Note: I am working in Xcode 7, with Swift 2.0 (Strings and Characters).


回答1:


As of Swift 2, String doesn't conform to SequenceType. However, you can use the characters property on String. characters returns a String.CharacterView which conforms to SequenceType and so can be iterated through with a for loop:

let word = "Zebra"

for i in word.characters {
    print(i)
}

Alternatively, you could add an extension to String to make it conform to SequenceType:

extension String: SequenceType {}

// Now you can use String in for loop again.
for i in "Zebra" {
    print(i)
}

Although, I'm sure Apple had a reason for removing String's conformance to SequenceType and so the first option seems like the better choice. It's interesting to explore what's possible though.




回答2:


String doesn't conform to SequenceType anymore. However you can access the characters property of it this way:

var word = "Zebra"

for i in word.characters {
    print(i)
}

Note that the documentation hasn't been updated yet.




回答3:


Swift 4

Forin loop:

let word = "Swift 4"
for i in word {
    print(i)
}

map example:

let word = "Swift 4"
_ = word.map({ print($0) })

forEach example:

let word = "Swift 4"
word.forEach({ print($0) })



回答4:


Swift 3.0.1

Use the indices property of the characters property to access all of the indices of individual characters in a string.

let greeting = "Guten Tag!"
for index in greeting.characters.indices {
print("\(greeting[index]) ", terminator: "")
}
// Prints "G u t e n   T a g ! "

visit https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/StringsAndCharacters.html



来源:https://stackoverflow.com/questions/30767594/iterate-through-a-string-swift-2-0

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!