簡體   English   中英

Swift:將Int轉換為UInt32,以及如何解包可選

[英]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轉換后,以防用戶輸入不明智的內容,使用guardif 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM