[英]Swift: Convert Int to UInt32, and how to unwrap optional
我很快就覺得很陌生,我只是想建立一些東西來測試水域。 這與我以前的問題有關。 我正在構建一些代碼以從UITextField對象獲取用戶輸入,並且基本上是在嘗試找出如何將Int轉換為UInt32的代碼,但是對於SO或其他方面的搜索並沒有真正起作用。
這是我的代碼//這是我稱之為用戶輸入的地方。
var rangeInput: Int? {
get {
return Int(rangeInputTextField?.text ?? "")
}
//這是我創建范圍的函數,並調用該范圍之外的隨機數
let viewController = ViewController()
var x = ViewController().rangeInput
let y = (Int?(x!))
var number = arc4random_uniform(Int(y!))//ERROR OCCURS HERE "Cannot convert value of type 'Int' to expected argument type 'UInt32'
//MARK: Class for random number
struct RandomNumber {
// numberRange to change the value for 1...X(user input)
//creates the list to be picked from. (pickRandom)
func numberRange(high: UInt32) ->Range<UInt32>{
if let high = UInt32?(0){
print("Invalid number")
} else { let high = Int(y!) + 1
}
let range = 1...high
return range
}
//pick random number from that list
let pickRandom = number
}
編輯:轉換后的UInt,在注釋中使用答案,但是在展開可選內容時遇到問題。 我在強制展開可選項時做錯什么了嗎?
let viewController = ViewController()
var x = ViewController().rangeInput
var number = arc4random_uniform(UInt32(x!)) // <----- UInt32 conversion
但是,建議您檢查用戶輸入x
和/或UInt32
轉換后,以防用戶輸入不明智的內容,使用guard
或if let
通過列出數據類型(在這種情況下為UInt32),然后列出包含參數的括號,可以快速調用初始化程序。 對於Swift中的大多數基本數據類型,沒有用於初始化程序的參數。 因此,如果您想制作一個Int,Float,Double,UInt32,String等,只需執行
UInt32(Value)!//UInt32 can be substituted for any of the above values
“!” 如果該值不是數據類型的有效形式,則將解開可選值,並在運行時導致錯誤,例如“在解開可選值時意外發現nil”,如果您想安全地執行此操作,則可以執行此操作
if UInt32(Value) != nil {
//Valid Value
}else {
//Invalid Value
}
同樣,這與問題無關,但是您的if let語句將始終為true,因為您將參數“ high”的值覆蓋為UInt32的0。但是,我可能是錯的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.