I have this expression which returns a UInt32
:
let randomLetterNumber = arc4random()%26
I want to be able to use the number in this if statement:
if letters.count > randomLetterNumber{ var randomLetter = letters[randomLetterNumber] }
This issue is that the console is giving me this
Playground execution failed: error: <REPL>:11:18: error: could not find an overload for '>' that accepts the supplied arguments if letters.count > randomLetterNumber{ ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
The problem is that UInt32
cannot be compared to an Int
. I want to cast randomLetterNumber
to an Int
. I have tried:
let randomLetterUNumber : Int = arc4random()%26 let randomLetterUNumber = arc4random()%26 as Int
These both cause could not find an overload for '%' that accepts the supplied arguments.
How can I cast the value or use it in the if statement?
Int8 is an Integer type which can store positive and negative values. UInt8 is an unsigned integer which can store only positive values. You can easily convert UInt8 to Int8 but if you want to convert Int8 to UInt8 then make sure value should be positive.
A 32-bit unsigned integer value type.
Integers are either signed (positive, zero, or negative) or unsigned (positive or zero). Swift provides signed and unsigned integers in 8, 16, 32, and 64 bit forms. These integers follow a naming convention similar to C, in that an 8-bit unsigned integer is of type UInt8 , and a 32-bit signed integer is of type Int32 .
Int(arc4random_uniform(26))
does two things, one it eliminates the negative results from your current method and second should correctly creat an Int from the result.
More simple than this, impossible:
Int(myUInteger)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With