[英]How can I convert an NSString to an Int?
我對Apple編程完全不熟悉,但我認為Swift在閱讀之后看起來很有趣。 我試圖在命令行上做一個簡單的數字猜謎游戲,但我不能讓它將整數轉換為字符串。 我試過很多方法來搜索互聯網,但是我不知道出了什么問題。 我不想直接接受用戶的輸入作為整數,我寧願將它從字符串轉換為整數,以便更容易處理錯誤(比如在Python中如何完成)。 這就是我做的:
import Foundation
// Get Input
let standardInput = NSFileHandle.fileHandleWithStandardInput()
// Convert to int function
func convertToInt(guess: String) -> Int {
var num: Int = guess.toInt()! // It tells me "Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)" on this line and the program stops
return num
}
println("Please enter your name.")
// Get the user's name
let data = standardInput.availableData
var name = NSString(data: data, encoding: NSASCIIStringEncoding)
println("Hello \(name)")
println("Please enter a number and I will try to guess it.")
// Get the user's number
let data2 = standardInput.availableData
var number = NSString(data: data2, encoding: NSASCIIStringEncoding)
// Call the function to convert the number to an int
var newnum = convertToInt(number)
println(newnum)
運行之后,它告訴我
fatal error: Can't unwrap Optional.None (lldb)
在調試區域。 我不知道如何解決這個問題。 有沒有辦法將數字直接從NSString
轉換為Int
?
您的代碼存在一些問題,但要回答手頭的問題,問題在於您濫用可選項(wwdc的swift視頻簡介中介紹了這一點)。
toInt方法返回一個可選而不是Int。 可選項是問題的答案:“如果我試圖轉換的字符串不是數字,應該返回什么?” 嘗試從不存在的字典中訪問密鑰也是如此。 在objective-c世界中,我們返回nil,但在Swift中它是可選的。 您需要做的是檢查值是否返回,如果是,您可以使用它。 例如
if let number = guess.toInt() {
//now we can do something with number because we know conversion worked
println(number)
} else {
println("a number wasn't entered")
}
在Swift 2中, toInt()
方法。 使用Int()
方法。
例如:
var tempInt :Int = Int("24")!
toInt
方法返回一個Optional。 您應該在使用之前檢查是否返回了值。
var name: String = NSString(string: "1234")
var integer:Int? = name.toInt()
if let integer = integer {
println("\(integer)")
}
您還可以使用NSNumberFormatter
從字符串中獲取數字。 注意這會返回一個NSNumber
,但您可以輕松地將它轉換為Swift Int
。
var numberFormatter = NSNumberFormatter()
var number:NSNumber? = numberFormatter.numberFromString("1234")
if let number = number {
var integer = Int(number)
println("\(integer)")
}
toInt
和numberFromString
返回Optionals。 如果字符串無法轉換為數字,則返回nil
。
var numberFormatter:NSNumberFormatter = NSNumberFormatter()
numberFormatter.usesGroupingSeparator = true
numberFormatter.groupingSeparator = ",";
numberFormatter.groupingSize = 3;
var number:String? = numberFormatter.stringFromNumber(numberFormatter.numberFromString("15487787878787")!)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.