2015-10-24 23 views
3

我有一個UILabel,它包含一個數字的String值,例如;將字符串值從UILabel轉換爲Int返回nil | Swift 2/Xcode 7

@IBOutlet weak var label: UILabel! 

label.text = "5" 

我然後試圖將字符串值轉換爲解開的Int常量。以前我用toInt但現在不在了,我試圖這樣做,

let labelText: String = label.text! 
let size: Int! = Int(labelText) 

但是大小返回nil值,而不是轉換後的值,在這種情況下,它應該是值5. Int有誰知道我在哪裏用新的語法出錯?

+0

你把''5「'分配給'label.text'在哪裏?在設置'size'的值之前,執行'print(「** \(labelText)**」)。你看到了什麼? '5'周圍不能有任何空格。你應該看到** 5 **'。 – vacawama

+0

該值實際上是「5.0」 – RileyDev

+0

'let size:Int! = Int(Double(labelText)!)' – vacawama

回答

3

您提供的語法應該可以工作。

也許label.text被設置爲一些其他值,會導致轉換失敗。

下面是一些例子,這將使sizenil

label.text = "5+" 
label.text = "5.0" 

是的,甚至是 「5.0」 將進行轉換失敗。

顯式投射到Double並且轉換回Int應該可以工作。

如果你不喜歡對付鑄造東西(或者你不知道文本的格式),您可以通過使用NSNumberFormatter避免它,這裏有一個例子:

let formatter = NSNumberFormatter() 
formatter.numberStyle = .DecimalStyle 

if let number = formatter.numberFromString(labelText) { 
    // number is an instance of NSNumber 
    size = number.integerValue 
} 

請注意創建一個NSNumberFormatter是一個昂貴的操作,請儘可能緩存它。

+0

字符串值實際上是「5.0」 - 一個Double,可能會導致值在將字符串轉換爲Int時爲零,因此可能需要將String轉換爲Double然後轉換爲Int。我對嗎 ? – RileyDev

0

令大小= INT(labelText.text) - 詮釋

讓DSIZE =雙(labelText.text) - 雙

您可能需要解開的標籤,如果你想在與使用它後來的功能。