UInt32
を返す次の式があります。
let randomLetterNumber = arc4random()%26
このifステートメントで番号を使用できるようにしたい:
if letters.count > randomLetterNumber{
var randomLetter = letters[randomLetterNumber]
}
この問題は、コンソールが私にこれを与えていることです
Playground execution failed: error: <REPL>:11:18: error: could not find an overload for '>' that accepts the supplied arguments
if letters.count > randomLetterNumber{
~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
問題は、UInt32
をInt
と比較できないことです。 randomLetterNumber
をInt
にキャストしたい。私が試してみました:
let randomLetterUNumber : Int = arc4random()%26
let randomLetterUNumber = arc4random()%26 as Int
これらは両方ともcould not find an overload for '%' that accepts the supplied arguments.
を引き起こします
Ifステートメントで値をキャストまたは使用するにはどうすればよいですか?
Int(arc4random_uniform(26))
は2つのことを行います。1つは現在のメソッドから否定的な結果を排除し、2つ目は結果からIntを正しく作成します。
これよりも簡単、不可能:
Int(myUInteger)
それで新しいintを作成するだけです
let newRandom: Int = Int(randomLetterNumber)
if letters.count > newRandom {
var randomLetter = letters[newRandom]
}
または、UInt32を気にしない場合は、すぐにIntを作成できます。
let randomLetterNumber = Int(arc4random() % 26)
できるよ
let u: UInt32 = 0x1234abcd
let s: Int32 = Int32(bitPattern: u)