Архив метки: iOS

Swift 2.0: guard (охранный оператор)

В swift 1.2 мы использовали if, когда делали привязку опционала (optional binding), но проблема в том, что приведенное к типу значению мы могли использовать только внутри блока if

Поэтому ввели оператор guard, который в отличии от if не имеет тела в случае успеха, только обязательный else в случае если привязка типа закончилась без успеха. Обычно в этом else пишут… Читать далее »

Swift: If and Switch (если и свич)

If (Если) и Switch (Переключатель) If – оператор проверки условия, если истинно – выполняется код, если нет – выполняется код из блока else, если он есть. Так же можно составлять подряд несколько условий (else if), но в этом случае разумней использовать оператор switch

Switch, в русском языке не переводят, никто не говорит переключатель, switch – он и в африке… Читать далее »

Swift: Loops (Циклы)

Есть два вида циклов: 1) с предусловием, четко обозначающим сколько раз должен выполниться цикл – for 2) цикл который будет выполняться пока условие цикла не станет false – while For делится на 2 подвида: for-in и for for-in пробегается по элементам последовательности

Из интересного только возможность не обозначать переменную внутри цикла, если она не нужна с помощью символа подчеркивания… Читать далее »

Swift: Dictionary (Словарь)

Словарь взаимозаменяем (bridged) с NSDictionary из Objective-C Инициализировать словарь также можно в полной форме или сокращенной

Можно сразу инициализировать

Доступ по ключу (ключ должен быть Hashable)

Доступ по индексу возвращает опциональный тип, поэтому можно написать так

Удалить значение из словаря по ключу можно так

ну или воспользоваться методом removeValueForKey Пробежаться по словарю можно стандартным

Читать далее »

Swift: Set (Множество)

Множество – коллекция элементов гарантирующая, что все ее элементы будут с уникальным значением, порядок не важен. Set взаимозаменяем (bridged) с NSSet из Objective-C Пример инициализации

так же позволяет впоследствии переопределять переменную упрощенным способом

Если из контекста ясно о том, какие данные должен хранить множество, тип можно опустить

Добавить элемент – insert

Проверка на наличие – contains… Читать далее »

Swift: Array (Массив)

Массив – это типизированная коллекция (generic collection) Array взаимозаменяем (bridged) с NSArray из Objective-C В зависимости от того присваивается массив переменной или константе – он будет изменяемым (mutable) или нет Инициализировать можно так

или проще так

после того как стало ясно какого типа элементы будут храниться в массиве, можно делать присвоение так

Проинициализировать, заполнив одним и тем… Читать далее »

Swift: String (Строки)

Строки в swift – значимого типа (value type), и по идее при передаче их в качестве параметра в функцию – каждый раз должна выполняться полная копия этой структуры, но обещают что компилятор знает когда передавать копию а когда ту же ссылку (в зависимости от того, будет ли меняться строка внутри функции или нет) String взаимозаменяем (bridged) с NSString из Objective-C… Читать далее »

Swift: Range Operators (Операторы диапазонов)

Были введены два оператора для диапазонов: – a…b – Closed Range Operator (закрытый оператор диапазона) – a..<b– Half-Open Range Operator (полуоткрытый оператор диапазона)

Цикл выполнится 5 раз (от 1 до 5) В случае же

цикл выполнится 4 раза, от 1 до 4

Swift: Nil Coalescing Operator ?? (Оператор объединения со значением nil)

Для удобства разворачивания optionals ввели Nil Coalescing Operator ??, который присваивает значение указанное справа после ?? если значение слева от ?? равно nil

т.к. customHeight не присвоено значение (текущее = nil) – height будет в итоге присвоено значение defaultHeight

В этом случае height присвоится значение customHeight = 20

Swift: Implicitly Unwrapped Optionals (Неявно распакованные опционалы)

В случае если вы уверены, что optional значение после инициализации не равно nil – есть Implicitly Unwrapped Optionals, неявно распакованные опционалы, обозначаются с помощью того же восклицательного знака, но уже при определении типа, к примеру Int!

Хоть мы по прежнему можем проверить на nil (в отличии от Int), но теперь делать это не обязательно (для отмены проверок и постоянного… Читать далее »