/ / Vérifier si un tableau existe Swift - tableaux, swift

Vérifier si un tableau existe Swift - tableaux, swift

En Objective-C, j'écrirais:

@property (nonatomic, strong) NSMutableArray *privateArray;
if (!self.privateArray) {
// Populate the privateArray
}

Qui vérifie qu'un tableau ne soit pas déjàexiste avant de le peupler. Comment cela pourrait-il être réalisé à Swift? J'ai essayé de l'implémenter en traduisant mon code Obj-C, mais une erreur Xcode "Opérateur unaire"! Ne peut pas être appliquée à un opérande de type "[AnyObject]" "

Tentative rapide:

private var privateArray: [AnyObject]?

if !privateArray {
// Populate the array
}

Comment pourrais-je vérifier si le tableau existe avant de le remplir, dans Swift? Est-ce aussi simple à utiliser .isEmpty sur le tableau?

Merci d'avance!

Réponses:

3 pour la réponse № 1

En Objective-C, cela s’appelle le chargement différé. Vous déclarez une propriété mais ne la créez que lors de son premier accès.

Le piège dans lequel vous êtes tombé pense que Swift n’est qu’une syntaxe différente autour d’Objective-C.

Dans Swift, vous pouvez avoir une var ...

Vous pouvez le déclarer comme ça ...

@lazy var someArray: [String] = {
return ["Hello", "World"]
}

Cela fera ce que vous voulez.

En note de côté. Ce n’est généralement pas une bonne idée d’utiliser AnyObject surtout si vous connaissez le type d'objet que le tableau va contenir.

En outre, en utilisant cette méthode, vous n’avez pas besoin que le tableau soit optionnel et vous évitiez ainsi tout le processus de décompression.

Vous pouvez en savoir plus sur les propriétés paresseuses en googlant. J'ai trouvé ça et ça a l'air plutôt bon ... http://mikebuss.com/2014/06/22/lazy-initialization-swift/


0 pour la réponse № 2

Vous devriez écrire:

if (privateArray == nil) {
// Populate the array
}