2015-06-05 15 views
17

Dovrebbe essere facile ma posso solo trovare la conversione inversa. Come posso convertire Int32 in Int in Swift? A meno che il problema non sia diverso?Come posso convertire Int32 in Int in Swift?

Ho un valore memorizzato in Dati principali e voglio restituirlo come Int.

Ecco il codice che sto usando, che non funziona:

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

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

'lasciare i32 = UInt32 (911)' 'e poi lasciare che i = Int (i32)' spero che questo aiuta –

+2

intValue torna Int32 è possibile utilizzare interoValore per restituire Int –

+0

return myUnit.valueForKey ("theNUMBER")?. interoValue ?? 0 –

risposta

5

L'errore è il tuo? dopo valueForKey.

L'inizializzatore di Int non accetta gli optionals.

Facendo myUnit.valueForKey(“theNUMBER”)?.intValue! fornisce un valore opzionale e il! alla fine non lo aiuta.

Basta sostituire con questo:

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

Ma si potrebbe anche fare in questo modo, se si vuole che sia fail-safe:

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

E per accorciare si funzione si può fare questo:

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

    return myUnit.valueForKey("theNUMBER")?.integerValue ?? 0 
} 
+0

Grazie! Ora funziona. – Michel

32

Mi manca qualcosa o non è questo ridicolmente facile?

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

Questo è strano, ottengo un errore quando lo faccio. – Michel

+0

È molto strano. Funziona solo nel mio parco giochi. Che errore stai ottenendo? – Eendje

+0

Se la conversione è come si scrive, il problema deve essere diverso. Ho modificato la domanda per rendere le cose più chiare. Voglio che funzioni la funzione, ho pensato che il problema riguardasse la conversione, ma forse non lo è. Sto facendo solo i miei primi passi in Swift. – Michel