2017-03-02 79 views
-1

我已经知道了,你可以转换一个文本框为int这样做:转换文本字段字符为int

var textNumber : Int = Int(numbers.text)! 

的问题是,我尝试给每个字符转换,这样做:

for number in numbers.text.characters 
{ 
    let number : Int = Int(number) 
} 

但当我试图做到这一点,我得到Cannot invoke initializer for type 'Int' with an argument list of type '(String.CharacterView._Element)'那么我怎么能做到这一点?我尝试了很多不同的方式,但我简单不能将字符转换为int。

+2

*提示:* Character - > String - > Int –

+0

你的提示更像是一个答案。哈哈,我虽然很快就能自己处理这件事。如果你想做出这个答案,我会赞扬它。 :) – Adrian

+0

@Adrian Swift避免了像C#和C++一样的隐含行为。它可以完成,但是故意避免它。 – Alexander

回答

1

您必须将字符转换为字符串第一:

for c in numbers.text.characters { 
    if let digit = Int(String(c)) { 
     print(digit) 
    } else { 
     // Invalid input 
    } 
} 

let allDigits = numbers.text.characters.flatMap { Int(String($0)) } 

(这会丢弃非数字字符)。

+0

我必须等4分钟才能接受答案,但现在我有疑问,我在哪里可以找到这个“层次结构”?我永远不会知道你必须将字符转换为字符串,然后转换为int。 – Adrian

+2

@Adrian:[Swift标准库](https://developer.apple.com/reference/swift)完整记录。 [这里](https://developer.apple.com/reference/swift/int)你会发现Int可以从一个字符串初始化(但不是来自Character)。 –

+1

@Adrian:你也可以在Xcode源代码编辑器中对“Int”或“import Swift”进行“选项点击”来探索Swift世界。 –