Swift. Основы разработки приложений под iOS, iPadOS и macOS - Василий Усов - E-Book

Swift. Основы разработки приложений под iOS, iPadOS и macOS E-Book

Василий Усов

0,0

Beschreibung

Мечтаете стать iOS-разработчиком, написать собственное приложение и работать в крутой компании? Тогда эта книга для вас! Язык Swift прост, понятен и отлично подойдет как новичкам, так и опытным программистам. Чтобы начать писать код, вам потребуются только эта книга, компьютер и желание учиться. Все базовые концепции программирования и основы синтаксиса объясняются доступным языком, поэтому если вы никогда раньше не занимались разработкой, то эта книга — отличный старт. Теория чередуется с практическими примерами и кодом — так вы сразу сможете связать абстрактные понятия с реальными ситуациями. В каждой главе вас ждут тесты и домашние задания, которые помогут закрепить материал. А еще Swift — это дружелюбное сообщество в Telegram, где можно обсуждать проекты и получать поддержку. Учитесь, создавайте и творите свое будущее!

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 580

Veröffentlichungsjahr: 2024

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Василий Усов
Swift. Основы разработки приложений под iOS, iPadOS и macOS. 6-е изд. дополненное и переработанное
2020

Литературный редактор М. Петруненко

Художник В. Мостипан

Корректоры С. Беляева, Н. Викторова

Василий Усов

Swift. Основы разработки приложений под iOS, iPadOS и macOS. 6-е изд. дополненное и переработанное. — СПб.: Питер, 2020.

ISBN 978-5-4461-1796-3

© ООО Издательство "Питер", 2020

Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.

Оглавление

Читателю
Присоединяйтесь к нам
Введение
Для кого написана книга
Особенности Swift
О том, как работать с книгой
О важности изучения английского языка
От издательства
Подготовка к разработке Swift-приложений
Какие варианты обучения доступны
Подготовка к разработке на Mac
Обзор Хcode
Часть I. Базовые возможности Swift
Глава 1. Отправная точка
1.1. Вычислительное мышление
1.2. Как компьютер работает с данными
1.3. Базовые понятия
1.4. Введение в операторы
1.5. Оператор инициализации
1.6. Переменные и константы
1.7. Инициализация копированием
1.8. Правила именования переменных и констант
1.9. Возможности автодополнения и кодовые сниппеты
1.10. Область видимости (scope)
1.11. Комментарии
1.12. Точка с запятой
1.13. Отладочная консоль и функция print(_:)
Глава 2. Фундаментальные типы данных
2.1. Предназначение типов данных
2.2. Числовые типы данных
2.3. Строковые типы данных
2.4. Логический тип данных
2.5. Псевдонимы типов
2.6. Дополнительные сведения о типах данных
2.7. Где использовать фундаментальные типы
Часть II. Контейнерные типы данных
Глава 3. Кортежи (Tuple)
3.1. Основные сведения о кортежах
3.2. Взаимодействие с элементами кортежа
3.3. Сравнение кортежей
3.4. Где используются кортежи
Глава 4. Последовательности и коллекции
4.1. Классификация понятий
4.2. Последовательности (Sequence)
4.3. Коллекции (Collection)
4.4. Работа с документацией
Глава 5. Диапазоны (Range)
5.1. Оператор полуоткрытого диапазона
5.2. Оператор закрытого диапазона
5.3. Базовые свойства и методы
5.4. Классификация диапазонов
5.5. Где использовать диапазоны
Глава 6. Массивы (Array)
6.1. Введение в массивы
6.2. Тип данных массива
6.3. Массив — это value type
6.4. Пустой массив
6.5. Операции с массивами
6.6. Многомерные массивы
6.7. Базовые свойства и методы массивов
6.8. Срезы массивов (ArraySlice)
6.9. Где использовать массивы
Глава 7. Множества (Set)
7.1. Введение во множества
7.2. Пустое множество
7.3. Базовые свойства и методы множеств
7.4. Где использовать множества
Глава 8. Словари (Dictionary)
8.1. Введение в словари
8.2. Тип данных словаря
8.3. Взаимодействие с элементами словаря
8.4. Пустой словарь
8.5. Базовые свойства и методы словарей
8.6. Вложенные типы
8.7. Где использовать словари
Глава 9. Строка — коллекция символов (String)
9.1. Character в составе String
9.2. Графем-кластеры
9.3. Строковые индексы
9.4. Подстроки (Substring)
Часть III Основные возможности Swift
Глава 10. Операторы управления
10.1. Утверждения
10.2. Оператор условия if
10.3. Оператор ветвления switch
10.4. Операторы повторения while и repeat while
10.5. Оператор повторения for
10.6. Оператор досрочного выхода guard
10.7. Где использовать операторы управления
Глава 11. Опциональные типы данных
11.1. Введение в опционалы
11.2. Извлечение опционального значения
11.3. Проверка наличия значения в опционале
11.4. Опциональное связывание
11.5. Опциональное связывание как часть оптимизации кода
11.6. Оператор объединения с nil
11.7. Где использовать опциональные значения
Глава 12. Функции
12.1. Введение в функции
12.2. Входные параметры и возвращаемое значение
12.3. Функциональный тип
12.4. Функция в качестве входного и возвращаемого значений
12.5. Возможности функций
12.6. Где использовать функции
Глава 13. Замыкания (closure)
13.1. Виды замыканий
13.2. Введение в безымянные функции
13.3. Возможности замыканий
13.4. Безымянные функции в параметрах
13.5. Пример использования замыканий при сортировке массива
13.6. Захват переменных
13.7. Замыкания передаются по ссылке
13.8. Автозамыкания
13.9. Выходящие (сбегающие) замыкания
13.10. Где использовать замыкания
Глава 14. Дополнительные возможности
14.1. Метод map(_:)
14.2. Метод mapValues(_:)
14.3. Метод flatMap(_:)
14.4. Метод compactMap(_:)
14.5. Метод filter(_:)
14.6. Метод reduce(_:_:)
14.7. Метод zip(_:_:)
14.8. Оператор guard для опционалов
14.9. Оператор отложенных действий defer
Глава 15. Ленивые вычисления
15.1. Понятие ленивых вычислений
15.2. Замыкания в ленивых вычислениях
15.3. Свойство lazy
Часть IV Введение в разработку приложений
Глава 16. Консольное приложение «Сумма двух чисел»
16.1. Обзор интерфейса Xcode
16.2. Подготовка к разработке приложения
16.3. Запуск приложения
16.4. Код приложения «Сумма двух чисел»
Глава 17. Консольная игра «Угадай число»
17.1. Код приложения «Угадай число»
17.2. Устраняем ошибки приложения
Часть V. Нетривиальные возможности Swift
Глава 18. Введение в объектно-ориентированное и протокол-ориентированное программирование
18.1. Экземпляры
18.2. Модули
18.3. Пространства имен
18.4. API Design Guidelines
Глава 19. Перечисления
19.1. Синтаксис перечислений
19.2. Ассоциированные параметры
19.3. Вложенные перечисления
19.4. Оператор switch для перечислений
19.5. Связанные значения членов перечисления
19.6. Инициализатор
19.7. Свойства в перечислениях
19.8. Методы в перечислениях
19.9. Оператор self
19.10. Рекурсивные перечисления
19.11. Где использовать перечисления
Глава 20. Структуры
20.1. Синтаксис объявления структур
20.2. Свойства в структурах
20.3. Структура как пространство имен
20.4. Собственные инициализаторы
20.5. Методы в структурах
Глава 21. Классы
21.1. Синтаксис классов
21.2. Свойства классов
21.3. Методы классов
21.4. Инициализаторы классов
21.5. Вложенные в класс типы
Глава 22. Свойства
22.1. Типы свойств
22.2. Контроль значений свойств
22.3. Свойства типа
Глава 23. Сабскрипты
23.1. Назначение сабскриптов
23.2. Синтаксис сабскриптов
Глава 24. Наследование
24.1. Синтаксис наследования
24.2. Переопределение наследуемых элементов
24.3. Модификатор final
24.4. Подмена экземпляров классов
24.5. Приведение типов
Глава 25. Контроль доступа
Глава 26. Псевдонимы Any и AnyObject
26.1. Псевдоним Any
26.2. Псевдоним AnyObject
Глава 27. Инициализаторы и деинициализаторы
27.1. Инициализаторы
27.2. Деинициализаторы
Глава 28. Управление памятью в Swift
28.1. Что такое управление памятью
28.2. Уничтожение экземпляров
28.3. Утечки памяти и ARC
28.4. Ссылки в замыканиях
Глава 29. Опциональные цепочки
29.1. Доступ к свойствам через опциональные цепочки
29.2. Установка значений через опциональные цепочки
29.3. Доступ к методам через опциональные цепочки
29.4. Доступ к сабскриптам через опциональные цепочки
Глава 30. Протоколы
30.1. Понятие протокола
30.2. Требуемые свойства
30.3. Требуемые методы
30.4. Требуемые инициализаторы
30.5. Протокол в качестве типа данных
30.6. Наследование протоколов
30.7. Классовые протоколы
30.8. Композиция протоколов
Глава 31. Расширения
31.1. Вычисляемые свойства в расширениях
31.2. Методы в расширениях
31.3. Инициализаторы в расширениях
31.4. Сабскрипты в расширениях
31.5. Расширения протоколов
Глава 32. Протокол-ориентированное программирование
32.1. Важность использования протоколов
32.2. Протокол-ориентированное программирование
32.3. Где использовать class и struct
Глава 33. Разработка приложения в Xcode Playground
33.1. UIKit и SwiftUI
33.2. Разработка интерактивного приложения
Глава 34. Универсальные шаблоны (Generic)
34.1. Зачем нужны дженерики
34.2. Универсальные функции
34.3. Ограничения типа
34.4. Универсальные объектные типы
34.5. Универсальные протоколы
34.6. Непрозрачные типы (Opaque types) и ключевое слово some
Глава 35. Обработка ошибок
35.1. Выбрасывание ошибок
35.2. Обработка ошибок
35.3. Структуры и классы для обработки ошибок
Глава 36. Нетривиальное использование операторов
36.1. Операторные функции
36.2. Пользовательские операторы
Часть VI. Введение в мобильную разработку
Глава 37. Разработка приложения с использованием UIKit
37.1. Создание проекта MyName
37.2. Структура проекта
37.3. Разработка простейшего UI
37.4. Запуск приложения в симуляторе
37.5. View Controller сцены и класс UIViewController
37.6. Доступ UI к коду. Определитель типа @IBAction
37.7. Создание дополнительной сцены
37.8. Отображение всплывающего окна. Класс UIAlertController
37.9. Изменение атрибутов кнопки
37.10. Доступ кода к UI. Определитель типа @IBOutlet
Глава 38. Разработка приложения с использованием SwiftUI
38.1. Создание нового проекта
38.2. Структура проекта на SwiftUI
38.3. Редактирование элементов интерфейса
38.4. Создание приложения
Глава 39. Паттерны проектирования
39.1. Паттерн MVC. Фреймворк Cocoa Touch
39.2. Паттерн Singleton. Класс UIApplication
39.3. Паттерн Delegation. Класс UIApplicationDelegate
Заключение

Посвящается моим родным

Спасибо маме и папе за то, что всегда поддерживали мои интересы и подтолкнули меня к выбору пути, определившего всю мою жизнь.

Спасибо супруге за то, что рядом, за то, что стала моим вдохновением.

Спасибо сестре и брату за то, что были со мной всю мою жизнь и всегда искренне радовались моим успехам.

Спасибо небольшой команде начинающих и состоявшихся разработчиков и IT-специалистов. Без вас книга не была бы такой, какая она есть:

Тимуру — @tima5959

Александру — @mosariot

Виктору — @krylwte

Рустаму — @Zed_Null

Денису — @g01dt00th

Игорю — @iAryslanov

Олегу — @GodOfSwift

Читателю

Привет! Меня зовут Василий Усов. Я автор учебных материалов по разработке на Swift под iOS и macOS. Прошло уже более пяти лет с написания первой книги по Swift, но ежегодно я обновляю и дополняю ее, описывая нововведения языка, и корректирую в соответствии с вашими рекомендациями и просьбами.

В этой книге я ставлю себе две основные задачи: популяризировать разработку на Swift под платформу Apple, а также найти наиболее эффективные способы и подходы к обучению. Благодаря вам я вижу, что мой многолетний труд не проходит впустую и приносит свои плоды. Многие из тех, кто купил прошлые издания и ввязался в эту вечную гонку за знаниями, уже разрабатывают свои приложения или нашли отличную работу, где могут полностью реализоваться.

ПРИМЕЧАНИЕ Писать книги по программированию, как и любую другую техническую литературу, — дело совершенно неприбыльное и отнимающее просто гигантское количество личного времени. Каждое издание книги пишется не менее 5 месяцев, а основная часть прибыли достается магазинам, дистрибьюторам и издателям, оставляя автору не более 5 %.

Если вы скачали книгу в Сети, но нашли ее очень полезной, то я буду благодарен, если вы внесете вклад в дальнейшее развитие проекта, совершив покупку на сайте https://swiftme.ru. С 2015 года и по сегодняшний день мои книги продаются только благодаря вашей поддержке.

Я рад каждому, кто зарегистрировался на сайте или добавился в Telegram-канал. Неважно, сколько вам лет: 15 или 40. Желание разрабатывать приложения уже само по себе бесценно, так как именно оно приведет вас к тому, чтобы создать «то самое приложение», которое совершит очередную революцию.

Если вы еще учитесь в школе, то это прекрасно, что поздно вечером вы не заставляете своих родителей переживать, а мирно сидите перед монитором с этой книгой в руках и изучаете невероятный язык Swift. Я также уверен, что вы не против купить новую модель iPhone, на который можно заработать, создав свое собственное приложение. И вот что я скажу: у вас все получится!

Если вы уже учитесь в институте, то Swift — это то, что будет держать ваш ум в тонусе. Помните, что многие из известных новаторов придумали и реализовали свои удивительные идеи именно в вашем возрасте. Сейчас вы находитесь на пике активности, воспользуйтесь этим!

Если вы старше, то наверняка у вас созрела гениальная идея, для реализации ­которой вы и пришли в разработку. Swift — это именно тот инструмент, который вам необходим. Главное, погрузившись в разработку, не забывайте о своих близких, хотя уверен, что они с полным пониманием отнесутся к вашему начинанию.

Дарите этому миру добро и прекрасные приложения! Добро пожаловать во вселенную Swift.

Присоединяйтесь к нам

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

Сайт сообщества

https://swiftme.ru

https://Swiftme.ru — это развивающееся сообщество программистов на Swift. Здесь вы найдете ответы на вопросы, возникающие в ходе обучения и разработки, а также уроки и курсы, которые помогут вам глубоко изучить тему разработки приложений.

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

https://swiftme.ru/course16

Материал книги будет усваиваться значительно лучше, если его закреплять просмотром видеоуроков и решением домашних заданий.

Мы в Telegram

https://swiftme.ru/telegramchat или https://t.me/usovswift

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

Опечатки книги

https://swiftme.ru/typo16

Здесь вы можете посмотреть перечень всех опечаток, а также оставить информацию о найденных вами и еще не отмеченных. Документ создан в Google Docs, для доступа нужен Google-аккаунт.

Листинги

https://swiftme.ru/listings16

Здесь вы можете найти большую часть листингов и проектов, создаваемых в книге.

Введение

На ежегодной конференции для разработчиков Apple WWDC (WorldWide Developers Conference) 2 июня 2014 года компания удивила iOS-общественность, представив новый язык программирования — Swift. Это стало большой неожиданностью: максимум, на что рассчитывали разработчики, — это обзор возможностей iOS 8 и новые API для работы с ними.

Начиная с 2014 года и по настоящий момент Swift активно развивается. Сегодня он стал основным языком разработки под платформу Apple, опередив все еще популярный язык Objective-C1. Swift — это язык программирования с открытым исходным кодом, а значит, он скоро будет поддерживаться и другими операционными системами2.

Если вы когда-либо программировали на других языках, то могу предположить, что после знакомства со Swift и со всем многообразием его возможностей вы не захотите возвращаться в «старый лагерь». Имейте в виду, что Swift затягивает и не отпускает!

Для кого написана книга

Ответьте для себя на следующие вопросы:

• Хотите ли вы научиться создавать программы под iOS, iPadOS, macOS, watchOS и tvOS?

• Вам больше нравится обучение в практической форме, чем скучные и монотонные теоретические лекции?

Если вы ответили на них утвердительно, то эта книга для вас.

Материал в книге подкреплен практическими домашними заданиями. Мы вместе пройдем путь от самых простых понятий до решения наиболее интересных задач, которые заставят ваш мозг усердно работать.

Не стоит бояться, Swift вовсе не отпугнет вас (как это мог бы сделать Objective-C), а процесс создания приложений окажется очень увлекательным. А если у вас есть идея потрясающего приложения, то совсем скоро вы сможете разработать его для современных мобильных систем iOS и iPadOS, стационарной системы macOS или Linux, смарт-часов Apple Watch или телевизионной приставки Apple TV.

Что нужно знать, прежде чем начать читать

Единственное и самое важное требование — уметь работать с компьютером: скачивать, устанавливать и открывать программы, пользоваться мышью и клавиатурой, а также иметь общие навыки работы с операционной системой. Как видите, для начала надо не так уж много.

Если вы раньше программировали на каких-либо языках, это очень поможет, так как у вас уже достаточно базовых знаний для успешного освоения материала. Если же это не так, не переживайте — я попытаюсь дать максимально полный материал, который позволит проходить урок за уроком.

Особенности Swift

Swift — это быстрый, современный, безопасный и удобный язык программирования. С его помощью процесс создания программ становится очень гибким и продуктивным, так как Swift вобрал в себя лучшее из таких языков, как C, Objective-C и Java. Swift на редкость удобен для изучения, восприятия и чтения кода. У него очень перспективное будущее.

Изучая Swift, вы удивитесь, насколько он превосходит другие языки программирования, на которых вы раньше писали. Его простота, лаконичность и невероятные возможности просто поразительны!

Современность

Swift — это комбинация последних изысканий в области программирования и опыта, полученного в процессе работы по созданию продуктов экосистемы Apple. Более того, Swift имеет очень большое сообщество и открытый исходный код, что позволяет оперативно добавлять в него новые возможности.

Объектно-ориентированность

Swift — объектно-ориентированный язык программирования, придерживающийся парадигмы «всё — это объект». Если сейчас вы не поняли, что это значит, не переживайте: чуть позже мы еще к этому вернемся.

Читабельность, экономичность и лаконичность кода

Swift создан для того, чтобы быть удобным в работе и максимально понятным. У него простой и функциональный синтаксис, позволяющий вместо сложных многострочных выражений писать однострочные (а в некоторых случаях — односимвольные!).

Безопасность

В рамках Swift разработчики попытались создать современный язык, свободный от уязвимостей и не требующий от программиста лишних усилий в процессе создания приложений. Swift имеет строгую типизацию: в любой момент времени вы точно знаете, с объектом какого типа работаете. Более того, в процессе программирования вам практически не надо думать о расходе оперативной памяти, Swift все делает за вас в автоматическом режиме.

Производительность

Swift еще очень молод, но по производительности разрабатываемых программ он приближается (а в некоторых случаях уже и обгоняет) ко всем известному «старичку» — языку программирования C++.3

Актуальность

Благодаря активно растущему сообществу разработчиков, штаб-квартирой которых стал портал https://swift.org, язык Swift поддерживает свою актуальность и стабильность работы. Для русскоязычного сообщества есть несколько профильных сайтов, одним из которых является https://swiftme.ru.

Все это делает Swift по-настоящему удивительным языком программирования.

О том, как работать с книгой

Использование смартфонов для решения возникающих задач стало нормой. Поэтому все больше компаний используют приложения для своего бизнеса и выделяют большие бюджеты на их обслуживание. Операционная система iOS является одной из популярнейших мобильных систем в мире, и в такой ситуации спрос на Swift-разработчиков растет необычайными темпами.

Книга является вводным курсом для всех желающих научиться программировать на замечательном языке Swift, чтобы создавать собственные приложения или устроиться на работу iOS-разработчиком.

В ходе чтения книги вы встретите не только теоретические сведения, но и большое количество практических примеров и заданий, выполняя которые вы углубите свои знания изучаемого материала. Вам предстоит пройти большой путь, и он будет очень интересным.

Несмотря на то что книга предназначена в первую очередь для изучения синтаксиса и возможностей языка Swift, вы узнаете о принципах разработки полноценных приложений. Можете быть уверены, эта информация будет очень полезной. С этой книгой вы освоите новый язык и напишете свой первый проект.

Проекты студентов

https://swiftme.ru/projects

Здесь вы можете найти проекты некоторых студентов, которые уже прошли обучение по нашим книгам и курсам. При желании вы сможете разместить здесь и свои работы. Просто напишите об этом в чате в Telegram.

Код и проекты в книге написаны с использованием Swift 5.3, iOS 14, Xcode 12 beta и операционной системы macOS 10.15 Catalina. Если у вас более свежие версии программного обеспечения (например, macOS 11 Big Sur и стабильная версия Xcode 12), то вполне возможно, что показанный на скриншотах интерфейс будет немного отличаться от вашего. При этом весь приведенный программный код с большой долей вероятности будет работать без каких-либо правок. Тем не менее если вы встретитесь ситуацией, при которой интерфейс или код необходимо исправить, то прошу сообщить мне об этом одним из способов:

• Отметить в специальном электронном файле (https://swiftme.ru/typo16).

• Написать в Telegram-канале (https://swiftme.ru/telegramchat или https://t.me/usovswift).

О самостоятельной работе

Очень важно, чтобы вы не давали своим рукам «простаивать». Тестируйте весь предлагаемый код и выполняйте все задания, так как учиться программировать, просто читая текст, — не лучший способ. Если в процессе изучения нового материала у вас появится желание поиграть с кодом из листингов, делайте это не откладывая. Постигайте Swift!

Не бойтесь ошибаться: пока вы учитесь, ошибки — ваши друзья. А исправлять их и избегать в будущем вам поможет среда разработки Xcode (о ней мы поговорим позже) и моя книга.

Помните: чтобы стать великим программистом, требуется время! Будьте терпеливы и внимательно изучайте материал. Желаю увлекательного путешествия!

Листинги

https://swiftme.ru/listings16

Здесь вы можете найти большую часть листингов и проектов, создаваемых в книге.

О домашних заданиях

Задания для самостоятельной работы на сайте https://swiftme.ru. Все, что вам нужно сделать, — зайти на https://swiftme.ru, зарегистрироваться, после чего получить доступ к базе учебных материалов.

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

https://swiftme.ru/course16

Советую ознакомиться с сайтом прямо сейчас, так как я не буду ограничиваться одними лишь заданиями. Со временем там появятся дополнительные учебные видео, которые, без сомнения, упростят изучение Swift.

Заглядывайте в учебный раздел перед каждой главой книги — так вы будете в курсе всех имеющихся дополнительных материалов и заданий для самостоятельного решения.

Очень часто во время написания кода начинающие разработчики пользуются нехитрым приемом «копировать/вставить». Они копипастят все, начиная от решения домашних заданий и заканчивая найденными в Сети готовыми участками кода, решающими определенную проблему. Недостаток такого подхода в том, что чаще всего человек не разбирается в том, что копирует. Решение задачи проходит мимо и не оседает в его голове.

Конечно, в некоторых случаях такой подход может ускорить достижение конечной цели: написание программы или последней страницы книги. Но в действительности ваша цель в получении глубоких знаний для повышения собственного уровня так и не будет достигнута.

Я настоятельно советую разбирать каждый пример или рецепт и не гнаться за готовыми решениями. Каждое нажатие на клавиатуру, каждое написание символа должно быть осознанным.

Если у вас возникают проблемы с решением задания — обратитесь к нашему сообществу в Telegram.

Старайтесь решать задания самостоятельно, используя при этом помощь сообщества, книгу и другие справочные материалы. Но не ориентируйтесь на то, чтобы посмотреть (или правильнее — подсмотреть?) готовое решение.

Экспериментируйте, пробуйте, тестируйте — среда разработки выдержит даже самый некрасивый и неправильный код!

Исправления в шестом издании

В результате долгого и плодотворного общения со многими из вас была выработана масса идей, благодаря которым новое издание стало еще более полезным. Огромное спасибо всем участникам каналов в Telegram — с вашей помощью книга становится лучше и интереснее.

По сравнению с предыдущим изданием эта книга содержит следующие изменения и дополнения:

• Формат книги изменен (теперь она больше и толще).

• Учебный материал актуализирован в соответствии со Swift 5.3 и Xcode 12.

• Переписаны и обновлены большинство глав в книге.

• Добавлен новый материал, который ранее не входил в книгу:

• Пример использования фреймворка SwiftUI.

• О выборе между классами и структурами.

• О протокол-ориентированном программировании.

• О числовом типе данных Decimal.

• О ключевом слове some.

• О принципах работы ARC и хранении value type и reference type в памяти.

• О новых методах для работы с массивами.

• Добавлены разделы «Для чего это использовать», которые кратко показывают, для чего в реальных проектах могут быть использованы изученные возможности.

• Наборы (set) переименованы в множества.

Обновлены графические материалы (схемы, рисунки, графики и скриншоты).

• Исправлены найденные опечатки и учтены пожелания и замечания читателей по оформлению и содержанию.

Структура книги

Вы уже начали путешествие в мир Swift. Совсем скоро вы выполните первые обязательные шаги перед разработкой собственных приложений. Вы узнаете, как завести собственную учетную запись Apple ID, как подключиться к программе Apple-разработчиков, где взять среду разработки Swift-приложений и как с ней работать.

Весь последующий материал книги разделен на шесть частей:

• Часть I. Базовые возможности Swift. После знакомства со средой разработки Xcode вы изучите базовые возможности Swift. Вы узнаете, какой синтаксис имеет Swift, что такое переменные и константы, какие типы данных существуют и как всем этим пользоваться при разработке программ.

• Часть II. Контейнерные типы данных. Что такое последовательности и коллекции и насколько они важны для создания ваших программ? В этой части книги вы познакомитесь с наиболее важными элементами языка программирования.

• Часть III. Основные возможности Swift. Третья часть фокусируется на рассмотрении и изучении наиболее простых, но очень интересных средств Swift, позволяющих управлять ходом выполнения приложений.

• Часть IV. Введение в разработку приложений. Эта часть посвящена изучению основ среды разработки Xcode, а также созданию двух первых консольных приложений.

• Часть V. Нетривиальные возможности Swift. В пятой части подробно описываются приемы работы с наиболее мощными и функциональными средствами Swift. Материал этой части вы будете использовать с завидной регулярностью при создании собственных приложений в будущем. Также здесь вас ждет большая практическая работа — создание первого интерактивного приложения в Xcode Playground.

• Часть VI. Введение в iOS-разработку. В конце долгого и увлекательного пути изучения языка и создания простых приложений вам предстоит окунуться в мир разработки полноценных программ. Из этой части вы узнаете основы создания интерфейсов и работы программ в Xcode «под капотом». Все это в будущем позволит вам с успехом осваивать новый материал и создавать прекрасные проекты.

Условные обозначения

Примечание В данном блоке приводятся примечания и замечания.

Листинг

Это примеры программного кода.

Синтаксис

В таких блоках приводятся синтаксические конструкции с объяснением вариантов их использования.

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

О важности изучения английского языка

Сложно найти специальность, для которой знание английского языка было бы настолько важным, как для разработчика. Конечно, есть программисты, которые учатся исключительно по русским источникам, но в этом случае они сами себя ограничивают.

Для работы с официальной документацией и чтения самых новых и познавательных статей необходимо знание английского языка! И к сожалению, ситуация вряд ли изменится. Отечественные разработчики не спешат создавать новые и интересные учебные материалы, а зачастую ограничиваются лишь переводом зарубежных статей.

Если у вас возникают трудности с чтением англоязычных статей, то самое время начать исправлять ситуацию. В любом случае ваша карьера во многом зависит от знания языка, каждая вторая фирма «выкатывает» это требование в описании вакансии.

Я считаю, что не обязательно тратить тысячи рублей ежемесячно на занятия с преподавателем (особенно если у вас уже есть школьная или институтская база). Лично я изучаю и поддерживаю уровень языка с помощью следующих средств:

• Мобильные приложения. Duolingo, Simpler, «Полиглот», Lingualeo и многие другие. В каждом из них есть свои положительные стороны, и каждое из них позволяет с пользой проводить 20–30 минут в общественном транспорте.

• Адаптированные книги. Вы можете купить, к примеру, «Тома Сойера» или «Алису в Стране чудес», но адаптированную для чтения новичками. Самое важное, что есть возможность выбора книг в соответствии с уровнем знания языка. К некоторым изданиям также прилагаются аудиоматериалы (тренировка восприятия речи на слух).

• Учебные видео на YouTube. Начинающим я бы посоветовал канал «Английский по плейлистам».

• Общение с носителями языка по Skype. Существует большое количество сервисов, где вы можете найти себе партнера для бесед (в большинстве случаев это платные услуги).

• Просмотр фильмов с оригинальной дорожкой. Именно это всегда было целью изучения мною английского языка!

Но, возможно, именно для вас правильным является обучение с преподавателем. Самое важное в этом деле — не бояться пробовать, не бояться ошибок! И советую — как можно раньше начинайте слушать речь: песни, фильмы с субтитрами, подкасты, так как знание не должно оканчиваться на умении читать.

От издательства

Ваши замечания, предложения, вопросы отправляйте по адресу [email protected] (издательство «Питер», компьютерная редакция).

Мы будем рады узнать ваше мнение!

На веб-сайте издательства https://www.piter.com вы найдете подробную информацию о наших книгах.

1 Swift отличается от Objective-C в сторону повышения удобства программирования. Однако в редких случаях при разработке программ вам, возможно, придется использовать вставки, написанные на Objective-C.

2 Приложения на Swift можно разрабатывать не только для операционных систем iOS, macOS, watchOS и tvOS, но и для Linux и Windows. Также есть решения, позволяющие писать на Swift и Server Side Code.

3 Соответствующие тесты периодически проводит и размещает на своем портале компания Primate Tabs — разработчик популярного тестера производительности Geekbench.

Подготовка к разработке Swift-приложений

Примечание Если вы не прочитали раздел «О том, как работать с книгой», то вернитесь к нему. В нем даны важные рекомендации по работе с книгой и дополнительными учебными материалами.

Сегодня Swift может быть использован не только для разработки приложений под платформу от Apple, но и под Linux, а также для написания Server Side-приложений. Моя цель — ввести вас в разработку под iOS, iPad и macOS. Тем не менее вы можете использовать ее и просто для изучения синтаксиса и возможностей языка для создания приложений под другие платформы.

Какие варианты обучения доступны

В этом разделе книги описаны основные доступные сегодня варианты обучения Swift. В качестве источника знаний вы будете использовать эту книгу, курс с домашними заданиями (https://swiftme.ru/course16), а также дополнительные материалы из Сети. Но вся сложность в том, где именно вам писать программный код, какую среду разработки использовать.

На сегодняшний день доступны следующие варианты:

1. Использовать компьютер Mac с операционной системой macOS и средой разработки Xcode. Данный вариант является наиболее предпочтительным и будет подробно описываться в книге.

Примечание У среды разработки Xcode есть конкурент — AppCode от JetBrains.

2. Использовать операционную систему Linux (например, Ubuntu), установив на нее пакет необходимых компонентов (https://swift.org/download), а также произвольный редактор кода с подсветкой синтаксиса Swift (один из вариантов — Sublime Text).

3. Использовать онлайн-редактор со встроенным компилятором Swift-кода (например, http://online.swiftplayground.run или один из его аналогов).

Каждый из указанных вариантов позволит вам попробовать Swift в деле, изучить его синтаксис и возможности, но если вы нацелены создавать приложения под платформу Apple, то вам необходим Mac, операционная система macOS и среда разработки Xcode (вариант № 1). Материал книги ориентирован именно на это.

Примечание О других способах изучения Swift и разработки собственных приложений, не имея при этом Mac, вы можете узнать в нашем чате в Telegram (https://swiftme.ru/telegramchat).

Подготовка к разработке на Mac

Компьютер Mac

Прежде чем приступить к разработке программ на языке Swift в macOS, вам потребуется несколько вещей. Для начала понадобится компьютер iMac, MacBook, Mac mini или Mac Pro с установленной операционной системой macOS. Лучше, если это будет macOS Catalina (10.15) или выше. В этом случае вы сможете использовать последнюю версию среды разработки Xcode и языка Swift.

Это первое и базовое требование связано с тем, что среда разработки приложений Xcode создана компанией Apple исключительно с ориентацией на собственную платформу. Под другие операционные системы ее не существует.

Если вы ранее никогда не работали с Xcode, то будете поражены широтой возможностей данной среды и необычным подходом к разработке приложений.

Зарегистрируйте учетную запись Apple ID

Следующим шагом станет получение учетной записи Apple ID и регистрация в центре Apple-разработчиков. Для этого необходимо пройти по ссылке https://developer.apple.com/register/ в вашем браузере (рис. 1).

Примечание Apple ID — это учетная запись, которая позволяет получить доступ к сервисам, предоставляемым фирмой Apple. Возможно, вы уже имеете личную учетную запись Apple ID. Она используется, например, при покупке мобильных приложений в AppStore или при работе с порталом iCloud.com.

Если у вас уже есть учетная запись Apple ID, используйте ее данные для входа в Центр разработчиков. Или нажмите кнопку Создайтесейчас и введите требуемые для регистрации данные.

Регистрация в качестве разработчика бесплатна. Таким образом, каждый может начать разрабатывать приложения, не заплатив за это ни копейки (если не учитывать стоимость компьютера). Тем не менее за 99 долларов в год вы можете участвовать в платной программе iOS-разработчиков (iOS Developer Program), которую вам предлагает Apple. Это обязательно, только когда решите опубликовать приложение в AppStore.

Рис. 1. Страница входа в Центр разработчиков

Советую пока не задумываться об этом, так как все навыки iOS-разработки можно получить с помощью бесплатной учетной записи и Xcode.

Скачайте и установите среду разработки Xcode

На стартовой странице Центра разработчиков необходимо перейти по ссылке DownloadTools, расположенной в центральной части окна, после чего откроется страница, содержащая ссылки на основные ресурсы для разработчиков. В Центре разработчиков вы можете получить доступ к огромному количеству различной документации, видео, примеров кода — ко всему, что поможет создавать отличные приложения.

Примечание На момент написания книги Xcode 12 находился на этапе beta-тестирования. Именно beta-версия среды разработки была использована для учебного материала. С большой долей вероятности в данный момент на сайте разработчиков уже доступна стабильная версия Xcode 12, которую вам и следует использовать.

Чтобы скачать актуальную версию среды разработки Xcode, перейдите по ссылке Release, расположенной в верхнем правом углу страницы (рис. 2). После этого вы перейдете на страницу с релизными (стабильными) версиями программных средств. Найдите в списке Xcode, нажмите на кнопку View on the App Store, после чего произойдет переход в App Store. Для скачивания Xcode просто щелкните на кнопке Загрузить и при необходимости введите данные своей учетной записи Apple ID.

После завершения процесса установки вы сможете найти Xcode в Launchpad или в папке Программы в Доке.

Рис. 2. Перечень ресурсов, доступных в Центре разработчиков

Обзор Хcode

Мы начнем изучение программирования на языке Swift со знакомства со средой разработки Xcode.

Примечание Интегрированная среда разработки (Integrated Development Environment, IDE) — набор программных средств, используемых программистами для разработки программного обеспечения (ПО).

Среда разработки обычно включает в себя:

• текстовый редактор;

• компилятор и/или интерпретатор;

• средства автоматизации сборки;

• отладчик.

Xcode — это IDE, то есть среда создания приложений для iOS и macOS (и других продуктов Apple). Это наиболее важный инструмент, который использует разработчик, и он по-настоящему удивительный! Xcode предоставляет широкие возможности, и изучать их следует постепенно, исходя из поставленных и возникающих задач. Внешний вид рабочей среды приведен на рис. 3.

Рис. 3. Интерфейс Xcode

Именно с использованием этого интерфейса разрабатываются любые приложения для «яблочных» продуктов. При изучении Swift на первых этапах вы будете взаимодействовать с иной рабочей областью — рабочим интерфейсом playground-проектов. О нем мы поговорим чуть позже.

Xcode распространяется на бесплатной основе. Это многофункциональное приложение без каких-либо ограничений в своей работе. В Xcode интегрированы: пакет iOS SDK, редактор кода, редактор интерфейса, отладчик и многое другое. Также в него встроены симуляторы iPhone, iPad, Apple Watch и Apple TV. Это значит, что все создаваемые приложения вы сможете тестировать прямо в Xcode (без необходимости загрузки программ на реальные устройства). Подробно изу­чать состав и возможности данной IDe мы начнем непосредственно в процессе разработки приложений.

Я надеюсь, что вы уже имеете на своем компьютере последнюю версию Xcode, а значит, мы можем перейти к первому знакомству с этой замечательной средой. Для начала необходимо запустить Xcode. При первом запуске, возможно, вам придется установить некоторые дополнительные пакеты (все пройдет в автоматическом режиме при щелчке на кнопке Install в появившемся окне).

После скачивания и полной установки Xcode вы можете приступить к ее использованию. Чуть позже вы создадите свой первый проект, а сейчас просто взгляните на появившееся при запуске Xcode стартовое окно (рис. 4).

Рис. 4. Стартовое окно Xcode

Стартовое окно служит двум целям: созданию новых проектов и организации доступа к созданным ранее. В данном окне можно выделить две области. Нижняя левая область представляет собой меню, состоящее из следующих пунктов:

• CreateanewXcodeproject — создать новый проект.

• Cloneanexistingproject — подключить репозиторий (при использовании системы контроля версий Git).

• OpenaProjectorFile — открыть уже существующий проект.

Правая часть окна содержит список созданных ранее проектов. В вашем случае, если вы запускаете Xcode впервые, данный список будет пустым. Но в скором времени он наполнится множеством различных проектов.

Примечание В названиях всех создаваемых в ходе чтения книги проектов я советую указывать номера глав и/или листингов. В будущем это позволит навести порядок в списке проектов и оградит вас от лишней головной боли.

Одной из потрясающих возможностей Xcode является наличие playground-проектов. Playground — это интерактивная среда разработки, своеобразная «песочница», или «игровая площадка», где вы можете комфортно тестировать создаваемый вами код и видеть результат его исполнения в режиме реального времени. С момента своего появления playground активно развивается. С каждой новой версией Xcode в нее добавляются все новые и новые возможности.

Представьте, что вам нужно быстро проверить небольшую программу. Для этой цели нет ничего лучше, чем playground-проект! Пример приведен на рис. 5.

Рис. 5. Пример playground-проекта

Как вы можете видеть, внешний вид интерфейса playground-проекта значительно отличается от рабочей области Xcode, которую вы видели ранее в книге. Повторю, что в playground-проекте можно писать код и сразу видеть результат его исполнения, но такой проект не служит для создания полноценных самостоятельных программ. Каждый playground-проект хранится в системе в виде особого файла с расширением playground.

Интерфейс playground-проекта

Нет способа лучше для изучения языка программирования, чем написание кода. Playground-проект предназначен именно для этого. Для создания нового playground-проекта выберите пункт главного меню File>New>Playground. Далее Xcode предложит вам выбрать типы создаваемого проекта (рис. 6), которые отличаются лишь предустановленным в проекте кодом.

Примечание Обратите внимание, что в верхней части окна есть возможность выбора платформы (iOS, tvOS, macOS).

Сейчас вам необходимо выбрать тип Blank, который содержит минимальное количество кода. После нажатия кнопки Next среда разработки попросит вас ввести имя создаваемого проекта. Измените имя на «Part 1 Basics» (или любое другое) и щелкните на кнопке Create. После этого откроется рабочий интерфейс созданного проекта (рис. 7).

Рис. 6. Окно выбора типа создаваемого проекта

Рис. 7. Рабочий интерфейс playground-проекта

С первого взгляда окно playground-проекта очень похоже на обыкновенный текстовый редактор. Но Xcode Playground имеет куда более широкие возможности.

Как показано на рис. 7, рабочее окно состоит из четырех основных областей.

• Toolbar, или панель инструментов, расположенная в верхней части окна. Данная область содержит кнопки управления окном и строку состояния.

• Navigators, или панель навигации, расположенная в левой части окна. С ее помощью вы можете производить навигацию по различным ресурсам, входящим в состав playground-проекта.

В ближайшее время данная панель нам будет не нужна, а значит, мы можем скрыть ее.

Нажмите на кнопку HideorshowtheNavigator, расположенную в левой части Toolbar.

• Code editor, или редактор кода, расположенная в центральной части окна. В ней вы можете писать и редактировать программный код. В только что созданном проекте уже имеются две строки с кодом.

• Results, или панель результатов, расположенная в правой части окна. В ней будет отображаться результат выполнения кода, написанного в Code editor.

Нажмите на кнопку ExecutePlayground, расположенную в нижней левой части Code editor.

Теперь на панели результатов отображается результат выполнения программного кода (рис. 8).

Рис. 8. Отображение значения в области результатов

Примечание Для принудительного запуска обработки кода вы можете использовать либо кнопку с изображением стрелки слева от строчки кода, либо кнопку Execute Playground, расположенную в нижней части окна (рис. 9).

Сейчас вы можете видеть результат выполнения строки 3 (значение параметра str) в области результатов. В дальнейшем мы вместе будем писать код и обсуждать результаты его выполнения.

Если навести указатель мыши на строку "Hello,playground" в области результатов, то рядом появятся две кнопки, как показано на рис. 10.

Левая кнопка (изображение глаза) включает отображение результата в отдельном всплывающем окне, правая — прямо в области кода.

Нажмите на каждую из кнопок и посмотрите на результат.

Рис. 9. Кнопки запуска обработки кода

Рис. 10. Дополнительные кнопки в области результатов

Возможности playground-проекта

Playground — это потрясающая платформа для разработки кода и написания обу­чающих материалов. Она просто создана для того, чтобы тестировать появляющиеся мысли и находить решения возникающих в процессе разработки проблем. У playground-проектов есть возможности, благодаря которым процесс разработки можно значительно улучшить.

В скором времени вы увидите, что в качестве результатов могут выводиться не только текстовые, но и графические данные. На рис. 11 показан проект, который будет реализован в книге.

В области результатов могут выводиться строки формата Ntimes, где N — целое число. Они говорят о том, что данная строка кода выводится N раз (рис. 12).

Рис. 11. Пример вывода графических элементов

Рис. 12. Вывод данных 5 раз в одной строке

Также Xcode имеет в своем арсенале такой полезный механизм, как автодополнение (в Xcode известное как автокомплит).

В редакторе кода на новой строке напишите латинский символ s, после чего вы увидите окно автодополнения (рис. 13).

Рис. 13. Окно автодополнения в Xcode

Все, что вам нужно, — выбрать требуемый вариант и нажать клавишу ввода, и он появится в редакторе кода. Список в окне автодополнения меняется в зависимости от введенных вами символов. Также все создаваемые элементы (переменные, константы, типы, экземпляры и т.д.) автоматически добавляются в список автодополнения.

Одной из возможностей Хcode, которая значительно упрощает работу, является указание на ошибки в программном коде. Для каждой ошибки выводится подробная вспомогательная информация, позволяющая внести ясность и исправить недочет (рис. 14).

Также информация об ошибке выводится на консоли в области отладки (Debug Area), показанной на рис. 15. Вывести ее на экран можно одним из следующих способов:

• выбрав в меню пункт View>DebugArea>ShowDebugArea;

• щелкнув на кнопке ShowtheDebugArea, расположенной в левом нижнем углу редактора кода.

Рис. 14. Отображение ошибки в окне playground-проекта

Рис. 15. Информация об ошибке выводится в Debug Area

Вы будете регулярно взаимодействовать с консолью в процессе разработки программ.

Примечание Если Debug Area пуста, то просто запустите проект одним из рассмотренных ранее способов.

Удалите из редактора кода строку с ошибкой (с символом s).

Swift дает исчерпывающую информацию об используемых в коде объектах. Если нажать клавишу Option (Alt) и щелкнуть на любом объекте в области кода (например, на str), то появится вспомогательное окно, в котором можно узнать тип объекта, а также имя файла, где он расположен (рис. 16).

Рис. 16. Всплывающее окно с информацией об объекте

Среда Xcode вместе с playground-проектами предоставляет вам поистине фантастические возможности для реализации своих идей!

Часть I. Базовые возможности Swift

Вы стоите на пороге удивительного мира разработки приложений. С каждым пройденным разделом книги, с каждой изученной страницей и каждым выполненным заданием вы будете все ближе к своей цели — к карьере успешного программиста под iOS или macOS.

Swift — удобный и интересный язык программирования. Если вы работали с языками С, PHP, Python или другими, то уже скоро заметите их сходство с детищем Apple. В этой части книги вы узнаете о базовых понятиях, которые предшествуют успешному программированию. Я обучу вас основам синтаксиса и работы с различными фундаментальными механизмами, которые легли в основу разработки программ на языке Swift.

• Глава 1. Отправная точка

• Глава 2. Фундаментальные типы данных

Примечание Весь изученный материал должен подкрепляться решением практических задач. Для этого переходите на сайт https://swiftme.ru. Там вы найдете не только задания для самостоятельного решения, но и дополнительные главы, не вошедшие в книгу, и, в дальнейшем, видеоуроки по каждой теме.