/ / Sprawdź, czy istnieje tablica Swift - tablice, szybkie

Sprawdź, czy istnieje tablica Swift - tablice, szybkie

W Objective-C napisałbym:

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

Który sprawdza, czy tablica już nie istniejeistnieje przed zapełnianiem go. Jak można to osiągnąć w Swift? Próbowałem go wdrożyć, tłumacząc mój kod Obj-C, ale otrzymałem błąd Xcode "Operator jednoargumentowy!" "Nie można zastosować do argumentu typu" [AnyObject] ""

Szybka próba:

private var privateArray: [AnyObject]?

if !privateArray {
// Populate the array
}

Jak sprawdzić, czy tablica istnieje przed zapełnieniem tablicy w Swift? Czy to jest tak proste w użyciu .isEmpty w tablicy?

Z góry dziękuję!

Odpowiedzi:

3 dla odpowiedzi № 1

W Objective-C nazywa się to leniwym ładowaniem. Deklarujesz właściwość, ale tworzysz ją dopiero po raz pierwszy.

Pułapka, w którą wpadłeś myśli, że Swift jest po prostu inną składnią wokół Celu-C.

W Swift możesz mieć leniwą odmianę ...

Możesz to zadeklarować ...

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

To zrobi, co chcesz.

Na marginesie. Zazwyczaj nie jest to dobry pomysł AnyObject zwłaszcza jeśli znasz typ obiektu, który będzie zawierała tablica.

Ponadto, za pomocą tej metody nie potrzebujesz tablicy jako opcjonalnej, dzięki czemu możesz uniknąć całej operacji rozpakowywania.

Możesz przeczytać więcej o leniwych właściwościach, googlując. Znalazłem to i wygląda całkiem dobrze ... http://mikebuss.com/2014/06/22/lazy-initialization-swift/


0 dla odpowiedzi nr 2

Powinieneś napisać:

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