tutorial the programming objective language curso apple ios swift

ios - the - null/nil en un lenguaje rápido



the swift programming language pdf (7)

¿Cómo definiríamos lo siguiente en un lenguaje de programación rápido?

  • nulo
  • nulo
  • Nulo
  • [NSNull null]

En otras palabras, ¿cuál sería el equivalente rápido de cada uno de estos términos objetivos c? Además, también me gustaría saber si existen casos de uso específicos para tipos de c no objetivos como estructuras y enumeraciones. Gracias por adelantado.


En cuanto a equivalentes:

  • NULL no tiene equivalente en Swift.
  • nil también se llama nil en Swift
  • Nil no tiene equivalente en Swift
  • [NSNull null] se puede acceder en Swift como NSNull ()

Nota: Estas son mis conjeturas basadas en la lectura y el juego. Correcciones bienvenidas.

Pero el manejo nulo / NULL en Swift es muy diferente del objetivo C. Parece diseñado para hacer cumplir la seguridad y la atención. Lea sobre las opciones en el manual . En general, una variable no puede ser NULA en absoluto y cuando necesita representar la "ausencia de un valor" lo hace declarativamente.


nil significa "sin valor", pero es completamente distinto en cualquier otro sentido desde Objective-C''s nil .

Se puede asignar solo a las variables opcionales. Funciona con literales y estructuras (es decir, funciona con elementos basados ​​en pila, no solo elementos basados ​​en pila).

Las variables no opcionales no se pueden asignar a nil incluso si son clases (es decir, viven en el montón).

Por lo tanto, explícitamente no es un puntero NULL y no es similar a uno. Comparte el nombre porque está destinado a ser utilizado por la misma razón semántica.


El concepto de Null en Swift se reanuda en la enumeración opcional. La enumeración se define así

enum Optional<T> { case Some(T) case None }

Lo que esto significa es que no puedes tener una variable / constante no inicializada en Swift. Si tratas de hacer esto, obtendrás un error del compilador diciendo que la variable / constante no puede ser sin inicializar. Necesitarás envolverlo en la enumeración opcional.

Este es el único concepto nulo que encontrarás en Swift


Swift''s nil no es lo mismo que nil en Objective-C.
En Objective-C, nil es un puntero a un objeto inexistente. En Swift, nil no es un puntero, es la ausencia de un valor de cierto tipo. Opcionales de cualquier tipo se pueden establecer en nil , no solo en tipos de objetos.

NULL no tiene equivalente en Swift.

nil también se llama nil en Swift

Nil no tiene equivalente en Swift

[NSNull null] se puede acceder en Swift como NSNull()


Tuve este problema en un escenario problemático: el paquete de configuración

Para que alguien no pierda su tiempo (¡Como lo perdí!)

let userDefaults = UserDefaults.standard var settingsValue = userDefaults.string(forKey: "user_preference") if settingsValue == nil { settingsValue = "1" } if (settingsValue?.isEqual("1"))! { //Do something } else { //Do something }

Hasta que el usuario abra la configuración de la aplicación por primera vez, el sistema devuelve cero. Y, en mi caso, la aplicación falla .


Si necesita usar un NULL en operaciones de puntero de bajo nivel, use lo siguiente:

UnsafePointer<Int8>.null()


if !(myDATA is NSNull) { // optional is NOT NULL, neither NIL nor NSNull } else { // null }