Swift将字符转换为string

将字符types转换为stringtypes有问题。 首先,我有String的扩展名,以便在String中查找第n个字符。

extension String { func characterAtIndex(index: Int) -> Character? { var cur = 0 for char in self { if cur == index { return char } cur++ } return nil } } 

我得到了我想要的类扩展。 但是,当我使用第n个字符作为我的自定义UIButton的标题时,出现错误。 我的Uibutton Class是

 class hareketliHarfler: UIButton { init(frame: CGRect) { super.init(frame: frame) // Initialization code } func getLetter(letter:String!){ self.titleLabel.text = letter } } 

当我尝试访问“getLetter(letter:String)”函数时显示错误。 这里是主视图控制器代码的例子:

  var harfim = hareketliHarfler(frame: CGRectMake(100,100,100,100)) var str="This is my String" var bufi=str.characterAtIndex(3) harfim.getLetter(bufi as AnyObject) **** 

*部分,我尝试.getLetter(bufi),.getLetter(bufi作为string)也尝试更改函数的参数types。 看起来像:func getLetter(letter:Character!)或者func getLetter(letter:AnyObject!)等等没find方法。 需要帮助。 谢谢

你的问题很简单:你的characterAtIndex函数返回一个Character,而self.titleLabel.text是一个String。 你不能在两者之间进行隐式转换。 最简单的方法是使用String初始化符将字符转换为string:

 // ch will be Character? type. if let ch = str.characterAtIndex(3) { // Initialise a new String containing the single character 'ch' harfim.getLetter(String(ch)) } else { // str didn't have a third character. } 

与其他解决scheme不同,这对于不常见的Unicode字符是安全的,并且不会初始化一个潜在的大数组或者迭代整个string来得到第三个字符。

如何简单的String(theCharacter)

Swift中工作4

改变这个:

 var bufi=str.characterAtIndex(3) harfim.getLetter(bufi as AnyObject) 

对此:

 harfim.getLetter(String(Array(str)[3])) 

那么这里发生了什么:

  1. 我们从string中创build一个数组。 数组元素是来自原始string的符号。 这种分解正确地跟踪用两个或更多个代码点的序列呈现的符号。 例如@MartinR指出的表情符号或标志。

  2. 我们在第四个位置访问元素。

请注意,当我们从初始string创build一个数组时,性能明智的做法是只使用短string,并避免重复例程。 但在你的情况下,似乎是好的。