How can I convert Int32 to Int in Swift?

32.5k views Asked by At

It should be easy but I can only find the reverse conversion. How can I convert Int32 to Int in Swift? Unless the problem is different?

I have a value stored in Core Data and I want to return it as an Int.

Here is the code I am using, which does not work:

func myNumber () -> Int {
    var myUnit:NSManagedObject
    myUnit=self.getObject(“EntityName”) // This is working.

    return Int(myUnit.valueForKey(“theNUMBER”)?.intValue!)
 }
4

There are 4 answers

0
Arbitur On BEST ANSWER

The error is your ? after valueForKey.

Int initializer doesnt accept optionals.

By doing myUnit.valueForKey(“theNUMBER”)?.intValue! gives you an optional value and the ! at the end doesnt help it.

Just replace with this:

return Int(myUnit.valueForKey(“theNUMBER”)!.intValue)

But you could also do like this if you want it to be fail safe:

return myUnit.valueForKey(“theNUMBER”)?.integerValue ?? 0

And to shorten you function you can do this:

func myNumber() -> Int {
    let myUnit = self.getObject("EntityName") as! NSManagedObject

    return myUnit.valueForKey("theNUMBER")?.integerValue ?? 0
}
7
Eendje On

Am I missing something or isn't this ridiculously easy?

let number1: Int32 = 10
let number2 = Int(number1)
0
Aaban Tariq Murtaza On

Swift 4.0 producing "Cannot invoke initializer for type 'Int' with an argument list of type '(() -> Int32)"

let number1: Int32 = 10
let number2 = Int(number1)

Simply do this

Int("\(Int32value)")

I'm unable to understand why swift is making things difficult.

0
LeoNard On

Sometimes "?" make things twisted , adding "!" to Int32 and then convert it to int works

let number1 = someInt32!
let number2 = Int(number1)