Estoy trabajando en una aplicación que implica el uso de NSUserDefaults. He guardado con éxito dos cadenas y actualmente estoy tratando de guardar un int.

Este es el código

var number = Int(0)

override func viewDidLoad() {
    super.viewDidLoad()

let numberOne = NSUserDefaults.standardUserDefaults()
    numberOne.setValue(number, forKey: "num")

let numberTwo = numberOne.stringForKey("num")

if numberTwo > 1
    {
       //will insert code later
    }

Mi error es que numberTwo aparece como una cadena. Esta es la primera vez que experimento con NSUserDefault, así que soy un novato, pero se agradece cualquier ayuda.

0
NICK 14 dic. 2016 a las 01:05

2 respuestas

La mejor respuesta

En caso de que quiera tratarlo como un valor entero, debe establecer (guardar) y obtener el valor como un entero, usando setInteger: forKey: y integerForKey::

var number = Int(0)

override func viewDidLoad() {
    super.viewDidLoad()

    let numberOne = NSUserDefaults.standardUserDefaults()
    numberOne.setInteger(number, forKey: "num")

    let numberTwo = numberOne.integerForKey("num") // 0

    if numberTwo > 1
    {
        //will insert code later
    }
}
0
Ahmad F 13 dic. 2016 a las 22:18

Si su valor es Int, puede recuperarlo con (Swift 3)

let numberTwo = numberOne.integer(forKey: "num")

Si Swift 2 creo que fue

let numberTwo = numberOne.integerForKey("num")

Puedes echar un vistazo a la Referencia de API de UserDefaults para obtener más detalles y más opciones (como como object(forKey:), string(forKey:) ...)

0
Keiwan 13 dic. 2016 a las 22:18