NSUserDefaults ya no parece ser una clase en el iOS 10 SDK:

let defaults = NSUserDefaults.standardUserDefaults()

Esta falla al compilar. Fue esta clase de eliminar?

(Este es un canónica P&Un par para evitar la inundación de duplicar preguntas)

InformationsquelleAutor JAL | 2016-06-13

3 Comentarios

  1. 47

    NSUserDefaults se ha cambiado el nombre a UserDefaults. standardUserDefaults() se ha cambiado el nombre a standard().

    let defaults = UserDefaults.standard

    Esta ahora funciona.

    Pre-lanzamiento de la documentación enlace.

    • Parece que voy a tener un poco de diversión de la reescritura de un pasado de código.
    • una vez que estas NSUserDefault cambios para ajustarse a Swift 3 / ios10 / Xcode 8 de valores actuales de todos nuestros NSUserDefaults persisten??
    • Sí, todos los datos seguirán existiendo. Estos son sólo la clase y función de los cambios de nombre.
    • ¡uf. Gracias! Mientras que sobre el tema – cuando Xcode 8 se lanzó al público, y todos estamos de actualizar nuestra sintaxis (como se explica en la respuesta anterior), ¿cómo (¿?) que afectan a los usuarios el uso de la aplicación que todavía están en ios8 & 9?
    • La sintaxis de cambio no debería afectar a los usuarios. Esto es puramente un cambio en el lenguaje Swift. Cualquiera de las clases que están disponibles en iOS 8 y 9 seguirá estando disponible. Si usted construye una versión de iOS 8 app con Swift 3 y Xcode 8, debería funcionar de la misma como un 10 app iOS con Swift 2.3, iOS 9 aplicación construida con Swift 2.2, etc.
  2. 20

    Para ser más preciso el uso de UserDefaults en Swift-3 :-

           //To save the string 
           let userDefaults = UserDefaults.standard
           userDefaults.set( "String", forKey: "Key")
    
           //To retrieve from the key
           let userDefaults = UserDefaults.standard
           let value  = userDefaults.string(forKey: "Key")
           print(value)
    • No hay necesidad de escribir el Foundation. antes de UserDefaults
  3. 16

    @JAL la respuesta es correcta, pero tal vez demasiado específico.

    Muchas de API consiguió cambió de nombre en Swift 3. La mayoría de los tipos de la Fundación (NSUserDefaults entre ellos) han perdido su NS prefijo y tenían sus métodos cambiado el nombre para reflejar Swift 3 de la API de Directrices. La fundación también «sustituye» a* un manojo de sus datos básicos tipo de clases (NSURL, NSIndexPath, NSDate, etc) con Swift-nativo los tipos de valor (URL, IndexPath, Date, etc). El método de cambio de nombre también se aplica a cualquier otro de Cacao /Cocoa Touch Api que utiliza en su aplicación.

    Lidiar con estos temas, uno por uno, línea por línea, es un camino seguro a la locura. La primera cosa que haces cuando el movimiento de un proyecto de Swift 3 debe ser elegir Editar > Convertir > A Swift Actual Sintaxis de la barra de menú. Esto se aplicará a todos los cambios a la vez, incluidos los casos en que una línea de código es afectado por múltiples cambios (y así enfrentar de forma individual no podrían llegar a donde crees que vas).

    *puse «reemplaza» entre comillas porque el correspondiente NS clases son todavía alrededor para los casos en los que usted puede ser que necesite de ellos, pero cualquier API que utiliza se refiere a los nuevos tipos de valor en su lugar: por ejemplo, formato tableview(_:cellForRowAt:) ahora toma un IndexPath, no un NSIndexPath.

    • Gracias rickster. Hay una meta pregunta acerca de la clase de cambio de nombre en iOS 10 aquí.

Dejar respuesta

Please enter your comment!
Please enter your name here