/ / Перевірте наявність масиву Swift - масиви, швидкі

Перевірте наявність масиву Swift - масиви, швидкі

У Objective-C я напишу:

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

Які перевірки, що масив вже не єіснує, перш ніж заснувати його. Як це можна досягти у "Свіфт"? Я намагався здійснити його шляхом перекладу мого Obj-C-коду, але отримав помилку Xcode "Унарний оператор!" "Не можна застосувати до операнда типу" [AnyObject] ""

Швидка спроба:

private var privateArray: [AnyObject]?

if !privateArray {
// Populate the array
}

Як перевірити наявність масиву перед запуском масиву, у Swift? Це просто так просто .isEmpty на масиві?

Спасибі заздалегідь!

Відповіді:

3 для відповіді № 1

У Objective-C це називається ліниве навантаження. Ви оголошуєте властивість, але тільки створюєте властивість при першому зверненні до нього.

Пастка, яку ви впали, - це думка, що Swift - це інший синтаксис навколо Objective-C.

У "Свіфт" ви можете мати ледачий варіант ...

Ви можете оголосити це таким ...

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

Це зробить те, що ти хочеш.

Як сторона примітка. Це взагалі не гарна ідея використовувати AnyObject особливо якщо ви знаєте, який тип об'єкта масив буде містити.

Також, використовуючи цей метод, ви не потребуєте, щоб масив був необов'язковим, тому можна уникнути всієї розпакованої речі.

Ви можете дізнатись більше про ледачі властивості, використовуючи його. Я знайшов це, і це виглядає досить добре ... http://mikebuss.com/2014/06/22/lazy-initialization-swift/


0 для відповіді № 2

Ви повинні написати:

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