Comment définirions-nous les éléments suivants dans le langage de programmation Swift:
En d’autres termes, quel serait l’équivalent Swift de chacun de ces termes de l’objectif C. En outre, aimerait également savoir s'il existe des cas d'utilisation spécifiques pour les types non Objective C tels que struct et enums Merci d'avance.
En ce qui concerne les équivalents:
NULL
n'a pas d'équivalent dans Swift. nil
est aussi appelé nil
dans SwiftNil
n'a pas d'équivalent dans Swift[NSNull null]
est accessible dans Swift en tant que NSNull ()Note: Ce sont mes suppositions basées sur la lecture et le jeu. Les corrections sont les bienvenues.
Mais la gestion des valeurs nil/NULL dans Swift est très différente de l’objectif C. Elle semble conçue pour renforcer la sécurité et les soins. Lisez optionnels dans le manuel . En règle générale, une variable ne peut pas être NULL du tout et lorsque vous devez représenter "l'absence de valeur", vous le faites de manière déclarative.
Si vous devez utiliser une opération NULL à un pointeur de bas niveau, utilisez les éléments suivants:
UnsafePointer<Int8>.null()
nil
signifie "aucune valeur" mais est complètement distinct dans tous les autres sens de la variable nil
de Objective-C.
Il est assignable uniquement à des variables optionnelles. Il fonctionne à la fois avec des littéraux et des structures (c’est-à-dire avec des éléments basés sur une pile, pas seulement avec des éléments basés sur des tas).
Les variables non facultatives ne peuvent pas être affectées à nil
même si elles sont des classes (c'est-à-dire qu'elles vivent sur le tas).
Donc, ce n'est explicitement pas un pointeur NULL
et pas semblable à un. Il partage le nom car il est destiné à être utilisé pour la même raison sémantique.
Le concept de null dans Swift reprend l’énumération facultative. L'énumération est définie comme ceci
enum Optional<T> {
case Some(T)
case None
}
Cela signifie que vous ne pouvez pas avoir une variable/constante non initialisée dans Swift. Si vous essayez cela, vous obtiendrez une erreur du compilateur indiquant que la variable/constante ne peut pas être non initialisée. Vous devrez l'envelopper dans l'énumération facultative.
C’est le seul concept Null que vous trouverez dans Swift
La variable nil
de Swift n’est pas la même que nil
en Objective-C.
En Objective-C, nil
est un pointeur sur un objet non existant. Dans Swift, nil
n'est pas un pointeur, c'est l'absence d'une valeur d'un certain type. Les options de tout type peuvent être définies sur nil
, pas seulement les types d'objet.
NULL
n'a pas d'équivalent dans Swift.
nil
est également appelé nul dans Swift
Nil
n'a pas d'équivalent dans Swift
[NSNull null]
peut être consulté dans Swift en tant que NSNull()
J'ai eu ce problème dans un scénario problématique: le paquet de paramètres
Pour que quelqu'un ne perde pas son temps (Comme je l'ai perdu!)
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
}
Tant que l'utilisateur n'a pas ouvert les paramètres de l'application pour la première fois, le système renvoie nil. Et, dans mon cas, l'application se bloque .
if !(myDATA is NSNull) {
// optional is NOT NULL, neither NIL nor NSNull
} else {
// null
}