Введение 9
Для кого предназначена эта книга? 10
Какова польза от книги? 10
Структура книги 10
Тестируйте листинги кода! 11
Программа Apple для разработчиков 11
ЧАСТЬ I. ОСНОВЫ SWIFT .
13
Глава 1. Swift: как он появился и с чего начать?
15
1.1. Как появился Swift? 15
1.2. Что нужно, чтобы начать разрабатывать на Swift? 16
1.3. Playground 16
1.4. Как создать новый документ Playground? 16
Глава 2. Особенности синтаксиса Swift
20
2.1. Swift — это C-подобный язык 20
2.2. Отсутствие заголовочных файлов 20
2.3. Точки с запятой ставить не обязательно 20
2.4. Набор символов 21
Выводы 21
Глава 3. Простые типы данных, переменные и константы
22
3.1. Переменные и константы 22
3.2. Вывод информации в консоль 24
3.3. Комментарии 24
3.4. Статическая типизация и вывод типов 25
3.5. Явное указание типов 26
3.6. Литералы 27
3.7. Числовые типы 27
3.7.1. Целые числа 27
3.7.2. Числа с плавающей точкой 28
3.7.3. Способы записи числовых типов 28
3.7.4. Преобразование числовых типов 29
3.8. Строки и символы 30
3.8.1. Конкатенация строк 30
3.8.2. Преобразование в строку 31
3.8.3. Интерполяция строк 31
3.9. Логические типы 31
3.10. Псевдонимы типов 31
Выводы 32
Глава 4. Базовые операторы
33
4.1. Оператор присваивания 34
4.2. Арифметические операторы 34
4.3. Составные операторы присваивания 34
4.4. Операторы инкремента и декремента 35
4.5. Операторы унарного минуса и унарного плюса 36
4.6. Операторы сравнения 36
4.7. Тернарный условный оператор 37
4.8. Операторы диапазона 37
4.9. Логические операторы 38
4.9.1. Логическое НЕ 38
4.9.2. Логическое И 38
4.9.3. Логическое ИЛИ 38
Выводы 38
Глава 5. Типы коллекций
40
5.1. Массивы 40
5.1.1. Объявление массива 40
5.1.2. Получение доступа к элементам массива 42
5.1.3. Добавление элементов в массив 43
5.1.4. Изменение элементов массива 44
5.1.5. Удаление элементов из массива 45
5.1.6. Итерация по массиву 46
5.2. Множества 46
5.2.1. Объявление множеств 47
5.2.2. Работа с множествами 47
5.2.3. Сочетание и сравнение множеств 49
5.3. Словари 50
5.3.1. Объявление словаря 50
5.3.2. Получение доступа к элементам словаря 51
5.3.3. Добавление элементов в словарь 51
5.3.4. Изменение элементов словаря 51
5.3.5. Удаление элементов из словаря 52
5.3.6. Итерация по словарю 52
Выводы 53
Глава 6. Ветвление потока
55
6.1. Условия 55
6.1.1. Условный оператор if 55
6.1.2. Оператор switch 57
6.2. Циклы 61
6.2.1. Циклы for 61
Стандартный цикл for 61
Цикл for-in 62
6.2.2. Цикл while 63
6.3. Управление потоком цикла 64
6.4. Оператор guard 65
6.5. Проверка на доступность API 66
Выводы 66
Глава 7. Функции
67
7.1. Объявление функции 67
7.2. Параметры 68
7.2.1. Внешние имена параметров 69
7.2.2. Параметры со значением по умолчанию 70
7.2.3. Сквозные параметры 70
7.2.4. Функции с переменным числом параметров 71
7.3. Возвращаемое значение функции 72
7.3.1. Функции с несколькими возвращаемыми значениями 73
7.4. Функции — объекты первого класса 75
7.4.1. Функции, принимающие параметры в виде функции 75
7.4.2. Функции, возвращающие функцию 76
7.4.3. Вложенные функции 77
Выводы 77
ЧАСТЬ II. УГЛУБЛЕННОЕ ИЗУЧЕНИЕ SWIFT
79
Глава 8. Опциональные типы
81
8.1. Опциональная привязка 83
8.2. Принудительное извлечение 83
8.3. Неявное извлечение 84
8.4. Опциональное сцепление 85
Выводы 85
Глава 9. Кортежи
86
9.1. Объявление кортежа 86
9.2. Получение доступа к элементам кортежа 86
9.2.1. Использование индекса элемента 86
9.2.2. Разложение кортежа 87
9.3. Именование элементов кортежа 87
9.4. Использование кортежей 88
9.4.1. Массовое присвоение 88
9.4.2. В циклах for-in 88
9.4.3. В качестве возвращаемого значения для функций 88
9.5. Опциональный кортеж 89
Выводы 90
Глава 10. Замыкания
91
10.1. Сокращенные имена параметров замыкания 94
10.2. Операторы-функции 94
10.3. Последующее замыкание 94
Выводы 96
Глава 11. Перечисления
97
11.1. Объявление перечислений 98
11.2. Перечисления и оператор switch 98
11.3. Связанные значения 99
11.4. Исходные значения 100
11.5. Вложенные перечисления 102
Выводы 103
Глава 12. Классы
104
12.1. Свойства, методы и объекты класса 104
12.2. Объявление классов 105
12.3. Свойства класса 105
12.3.1. Ленивые свойства 107
12.3.2. Вычисляемые свойства 108
12.3.3. Наблюдатели свойств 111
12.3.4. Вычисляемые переменные и наблюдатели для переменных 111
12.3.5. Свойства типа 112
12.4. Инициализаторы 113
12.4.1. Инициализатор по умолчанию 113
12.4.2. Инициализаторы с параметрами 114
12.4.3. Локальные и внешние имена параметров инициализатора 116
12.4.4. Проваливающиеся инициализаторы 117
12.4.5. Деинициализаторы 118
12.5. Методы 118
12.5.1. Создание методов 118
12.5.2. Методы типа 120
12.6. Индексаторы 121
12.6.1. Синтаксис индексаторов 121
12.6.2. Многомерные индексаторы 121
Выводы 124
Глава 13. Наследование
126
13.1. Переопределение 127
13.2. Наследование инициализаторов 127
13.3. Переопределение инициализаторов 131
13.4. Назначенные и удобные инициализаторы 132
13.5. Необходимые инициализаторы 134
Выводы 135
Глава 14. Автоматический подсчет ссылок
136
14.1. Принципы работы автоматического подсчета ссылок 136
14.2. Циклы сильных ссылок внутри объектов классов 137
14.3. Решение проблемы циклов сильных ссылок между объектами классов 138
14.3.1. Слабые ссылки 139
14.3.2. Ссылки без владельца 139
Выводы 140
Глава 15. Структуры
141
15.1. Типы-значения и ссылочные типы 141
15.2. Оператор идентичности 141
15.3. Свойства структур 142
15.4. Свойства типа для структур 143
15.5. Методы структур 144
15.6. Методы типа для структур 144
15.7. Инициализаторы структур 145
Выводы 145
Глава 16. Проверка типов и приведение типов
146
16.1. Проверка типов 146
16.2. Приведение типов 148
16.3. Проверка типов Any и AnyObject 150
16.3.1. Тип AnyObject 150
16.3.2. Тип Any 151
Выводы 152
Глава 17. Расширения
153
17.1. Расширение свойств 153
17.2. Расширение методов 154
17.3. Расширение инициализаторов 155
Выводы 155
Глава 18. Протоколы
156
18.1. Объявление протокола 156
18.2. Требования для свойств 156
18.3. Требования для методов 158
18.4. Требования для инициализаторов 160
18.5. Протоколы как типы 160
18.6. Соответствие протоколу через расширение 161
18.7. Наследование протоколов 161
18.8. Протоколы только для классов 161
18.9. Сочетание протоколов 162
18.10. Проверка объекта на соответствие протоколу 162
18.11. Расширения протоколов 162
Выводы 163
Глава 19. Обобщенные типы
164
19.1. Обобщенные функции 164
19.2. Обобщенные типы 165
19.3. Ограничения типов 166
Выводы 166
Глава 20. Обработка ошибок
167
Выводы 168
Глава 21. Расширенные операторы
169
21.1. Оператор объединения по нулевому указателю 169
21.2. Операторы с переполнением 169
21.2.1. Переполнение значения 170
21.2.2. Потеря значения 170
21.3. Перегрузка операторов 170
21.4. Побитовые операторы 171
21.4.1. Побитовый оператор NOT 171
21.4.2. Побитовый оператор AND 171
21.4.3. Побитовый оператор OR 172
21.4.4. Побитовый оператор XOR 172
21.4.5. Побитовые операторы левого и правого сдвига 172
Выводы 172

Заключение 173
Изучайте фреймворки Apple 173
Вступайте в Apple’s Developer Program 173
Вперед, к новым высотам! 173