字符串没有名为 "characters" 的成员?

5

我在尝试使用Swift游乐场时,尝试了以下代码,但它并没有起作用,并告诉我'String' 没有名为 'Characters' 的成员。我希望打印出咖啡店 中的字符数为4。你能给我一些提示吗?谢谢。

var word = "cafe"
print("the number of characters in \(word) is \(word.characters.count)")
4个回答

13

characters是Swift 2中String的一个属性,它随着Xcode 7 beta一起发布。

你可能正在使用Swift 1.2的Xcode 6.3.2版本,那么它就没有这个属性。

print("the number of characters in \(word) is \(count(word))")

Swift 2.0有两个变化:

  • String不再遵循SequenceType协议,你需要显式地访问.characters,
  • 全局的count()函数已被一个"协议扩展"方法count()所取代。

答案很好。我可以问一下在 "新的" Swift2 中获取字符串长度的最佳实践(或其他典型实践)是什么吗?因为像 word.characters.count 这样的表达式似乎有点复杂。谢谢。 - Eric Tsui
据我所知,这确实是确定长度的方法。正如您可以从Xcode 7 beta版本的发行说明中看到的那样,“字符”属性已被引入以区分相当普遍的“Unicode扩展字形群视图”与“UTF-16视图”或“UTF-8视图”。因此,word.utf8.count会将长度作为UTF-8字符串给出。 - Martin R
@Martin R:感谢您提供的信息,这为我研究“characters”属性提供了线索。 - Eric Tsui

0
使用计数字符方法:
println(the number of characters in \(word) is \(count(word))")

使用 Swift 2:

word.characters.count

0

此外,若要获取实际字符,您可调用:

let characters = Array(string)

然后,您只需调用:

let length = characters.count

然而,在Swift 1.2中,如果您不需要迭代字符或其他内容,您也可以使用计数函数:

let length = count(string)

在Swift 2中:

let length = string.count()

0

我想你正在阅读iBook上的Swift 2教程。这是新功能,只能在Xcode 7中使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接