2017-03-02 80 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世界。 –