Содержание
- Содержание курса
- Дополнительные образовательные программы
- Кросс-платформенные программы для использования Swift
- Scheduler
- Односторонние диапазоны
- Логические операторы
- Классы и Методы
- Равенство префиксов и суффиксов
- Юникод представления строк
- Строковые литералы
- Монады: не часть парадигмы ФП, а инструмент (необязательный)
- История
Содержание курса
Содержание
1. Знакомство с Playground (11:08)
2. Константы и переменные (4:21)
3. Типы данных (8:26)
4. Базовые операторы (13:47)
5. Интерполяция строк (6:21)
6. Массивы (10:33)
7. Словари (7:33)
8. Множества (8:54)
9. Инструкция if (10:31)
10. Инструкция guard (5:30)
11. Инструкция switch (05:22)
12. Цикл for-in (8:17)
13. Циклы while, repeat-while (3:38)
14. Функции (17:52)
15. Замыкания или клоужеры (5:26)
16. Кортежи (6:46)
17. Опционалы (6:13)
18. Классы (9:08)
19. Инициализаторы (6:02)
20. Наследование (9:17)
21. Вычисляемые свойства (10:23)
22. Свойства классов (6:09)
23. Ленивые свойства (2:46)
24. Наблюдатели свойства (5:50)
25. Уровни доступа (7:06)
26. Алиасы типов (4:02)
27. Перечисления или энумы (11:05)
28. Структуры (8:03)
29. Импорт фреймворков или библиотек (5:53)
30. Проверка типов и приведение типов (10:43)
31. Типы AnyObject и Any (3:57)
32. ARC (9:10)
33. ARC в замыканиях (9:04)
34. Опциональные цепочки (6:14)
35. Обработка ошибок и отложенные действия (15:22)
36. Сабскрипты (6:16)
37. Расширения (4:48)
38. Протоколы (10:54)
39. Универсальные шаблоны (9:15)
40. Обновление Swift 4 (8:15)
41. Новые фишки Swift 5 (05:44)
42. Заключение (0:58)
Общая продолжительность курса 5 часов 26 минуты 06 секунд.
Дополнительные образовательные программы
Swift-разработчик – это серьезная профессия, которая требует немалого объема знаний и навыков. Самому обучиться если не невозможно, то крайне сложно. Поэтому спрос на онлайн-курсы, интенсивы и вебинары не падает.
Предлагаю рассмотреть еще парочку полезных онлайн-программ для новичков и специалистов-практиков.
Swift с полного нуля. Быстрый старт – Свифт Лаб
Swift с полного нуля. Быстрый старт – это обучающая программа, которая состоит из более 50 онлайн-занятий, посвященных Swift-разработке.
Продолжительность всех уроков в целом – 5,5 часов. Студентам предоставляется неограниченный доступ к учебным материалам.
Курс предназначен для начинающих без какого-либо опыта программирования, которые хотят узнать, как создать IT-продукт для iOS.
В программе:
- работа с кортежами и опционалами;
- массивы данных;
- оператор guard;
- замыкания;
- основы языка;
- преобразование типов;
- псевдонимы типов;
- кортежи;
- операторы;
- работа со строками;
- переменные и константы;
- множества;
- циклы;
- параметры и их виды;
- замыкания.
Стоимость – 990 руб.
Еще несколько обучающих программ от Свифт Лаб:
- iOS разработчик с нуля
- SpriteKit. Создание 2D игр на Swift
Разработчик iOS – Swiftme.ru
Разработчик iOS – это программа обучения для студентов, желающих узнать об основах Swift-разработки. Авторы предлагают уникальную методику, которая включает в себя изучение книг, выполнение домашних заданий и онлайн-тестов, помощь наставников.
На данный момент доступен только формат самостоятельного обучения. В разработке индивидуальные занятия с преподавателем и онлайн-уроки в группе.
Что входит в самостоятельный курс:
- выдаются книги на русском языке о Swift-разработке и о самом языке;
- предлагается более 350 тестов;
- даются домашние практические задания, которых наберется около 170;
- помощь наставников;
- доступ в Telegram-чат и в Slack-чат.
Стоимость – от 600 руб.
Кросс-платформенные программы для использования Swift
Хотя Swift — это язык программирования, принадлежащий Apple, с помощью которого можно разрабатывать приложения для macOS и iOS, это не означает, что мы не можем использовать его на компьютере с Windows, пока мы используем подходящий и совместимый инструмент.
Атом, один из самых популярных редакторов
Мы говорим о бесплатном текстовом редакторе с открытым исходным кодом для Windows, хотя его также можно использовать на других платформах, таких как macOS и Linux. Он разработан для использования всеми типами пользователей, будь то новички или продвинутые. Редактор позволит нам организовывать проекты по папкам, использовать несколько панелей одновременно и поддерживать такие языки, как C ++, PHP, JavaScript, HTML, а также Swift.
В настоящее время с Atom возможно автозаполнение кода Swift с помощью sourcekitten и сборка с помощью сборки Swift. Это также позволяет нам видеть список ошибок и предупреждений компиляции, устанавливать точки останова в коде Swift и запускать приложение, созданное в lldb. Кроме того, мы сможем проходить в точках останова. Кроме того, мы сможем взаимодействовать с lldb, используя его интерфейс командной строки.
Мы можем бесплатно скачать Atom прямо с их веб-сайт Честного ЗНАКа .
Sublime Text, имеет собственный пакет для Swift
Это текстовый редактор кода, совместимый с широким спектром языков программирования, а также с языком разметки, что делает его одним из лучших вариантов для профессионалов. Он предлагает совместимость с популярными языками программирования, такими как HTML и CSS, а также со Swift для Apple, для которого у него есть хорошо известный пакет под названием Swift-Sublime-Пакет что мы должны установить через Пакетный контроль.
Его главный недостаток заключается в том, что это не самое интуитивно понятное приложение в мире, поэтому его использование предназначено особенно для самых продвинутых пользователей, поскольку оно способно повысить нашу производительность, как только нам удастся освоить его работу. Он имеет очень полезные функции, такие как определение стержней синтаксиса, выделение кода, выбор нескольких строк или выполнение разделенного редактирования и т. Д.
Мы можем скачать Sublime Text с веб-сайта , будучи совместимым с Windows, но также с macOS и Linux. Мы также можем получить доступ к вашему Swif-Sublime-Package из здесь .
Visual Studio Code, возможность программирования Swift от Microsoft
У Microsoft также есть собственный редактор исходного кода под названием VS Code, который отвечает за совместимость с большим количеством языков программирования, таких как C #, C ++, HTML, Java, PHP, Python, SQL и также поддержка Swift за счет использования специального расширения. Он включает в себя списки завершения, справку по сигнатуре, фрагменты, краткую информацию и определение перехода. Чтобы работать в среде Swift, мы должны установить расширение для Swift в его палитре команд.
Этот бесплатный редактор имеет несколько интерактивных функций, таких как выделение синтаксиса и автозаполнение с помощью IntelliSense, которое предоставляет нам интеллектуальное завершение на основе типов переменных, определений импортированных функций и модулей, кода отладки, проверки различий и прямых фиксаций из редактора и т. Д. Кроме того, он включает встроенный элемент управления Git, подсветку синтаксиса, интеллектуальное завершение кода, фрагменты и рефакторинг кода.
Visual Studio Code доступен для Windows и других платформ, таких как Linux и macOS, бесплатно. Мы можем скачать это из этой ссылки .
Scheduler
Очень важная тема, которую в этой статье я бы хотел затронуть, это scheduler. Scheduler, позволяют нам запускать наши observable на определенных потоках и в них есть свои тонкости. Начнем, существует 2 вида установить observable scheduler — () и ().
SubscribeOn
SubscribeOn отвечает за то, в каком потоке будет выполняться весь процесс observable до того момента, как его event’ы дойдут до обработчика (подписчика).
ObserveOn
Как можно догадаться observeOn отвечает за то, в каком потоке будут обрабатываться принятые подписчиком event’ы.
Это очень крутая штука, потому что мы можем очень легко поставить загрузку чего-либо из сети в background поток, а при получении результат перейти в main поток и как-то воздействовать на UI.
Давайте посмотрим, как это работает на примере:
В консоль мы получим:
Мы видим, что observable создавался в background потоке, а обрабатывали данные мы в main потоке. Это полезно при работе с сетью к примеру:
Таким образом запрос будет выполняться в background потоке, а вся обработка ответа будет происходить в main. На данном этапе пока рано говорить, что за rx метод у URLSession нарисовался вдруг, это будет рассмотрено позднее, данный код был приведен в качестве примера использования Scheduler, кстати, в консоль мы получим следующий ответ.
В финале давайте посмотрим еще что за data нам пришла, для этого придется выполнить проверку, чтобы не начать парсить сообщение completed случайно.
Мы проверяем, что event не сообщение о завершении работы observable и не ошибка пришедшая от него, хотя можно было реализовать другой метод подписки и обработать все эти виды event’ов отдельно, но это вы уже сможете сделать самостоятельно, а в консоль мы получим следующее.
Данные получены 🙂
Односторонние диапазоны
Операторы замкнутого диапазона имеют себе альтернативу — диапазон, который продолжается насколько возможно, но только в одну сторону, например, диапазон, который включает все элементы массива, начиная от 2 и до последнего индекса. В этих случаях вы можете пропустить значение с одной стороны оператора диапазона. Этот тип диапазона называется односторонним, потому что оператор имеет значение только с одной стороны. Например:
Оператор полузамкнутого диапазона так же имеет одностороннюю форму, которая записывается только с одним конечным значением. Точно так же как и в случае, когда вы включаете значение в обе стороны, конечное значение не является частью самого диапазона. Например:
Односторонние диапазоны могут быть использованы в разных контекстах, а не только в сабскриптах. Вы не можете итерировать по одностороннему диапазону, который пропускает первое значение, потому что становится не очевидным, где должна начинаться итерация. Вы можете итерировать по одностороннему диапазону, который пропускает последнее значение, однако, так как диапазон длится бесконечно, убедитесь, что вы добавили условие окончание итерации в цикл. Вы так же можете проверить имеет ли односторонний диапазон конкретное значение, что показано ниже:
Логические операторы
Логические операторы изменяют или комбинируют логические значения типа Boolean (булево) — true и false. Язык Swift, как и другие C-подобные языки, поддерживает три стандартных логических оператора:
- логическое НЕ (!a)
- логическое И (a && b)
- логическое ИЛИ (a || b)
Классы и Методы
Одна из самых частых вещей, которую вы будете делать при разработке приложении на Swift — создание классов и методов. Удалите все, что написали ранее в файл нашего playground’а.
Далее, мы создадим класс, который поможет нам, допустим, посчитать количество чаевых, которые мы должны оставить в ресторане.
Для того чтобы создать класс, нужно поставить ключевое слово class, после которого написать его имя. После чего, нужно написать фигурные скобки для тела класса.
Если вы создаете субкласс, то после имени субкласса, вам нужно поставить двоеточие и имя суперкласса. В отличии от Objective-C в Swift вам не нужно постоянно писать суперкласс NSObject или что-то другое. Добавьте в фигурные скобки следующее:
После того, как вы добавите этот код, вы получите несколько ошибок, не переживайте, мы скоро их исправим.
Свойства класса создаются точно так же как и просто константы или переменные. Здесь мы создали три константных свойства: первое — счет после уплаты налогов, второе — налоги, третье — счет до уплаты налогов.
Обратите внимание, что вы обязаны указывать начальное значение для свойств при их объявлении, также, вы можете указать их в инициализаторе. Но мы не сделали ни того, ни другого, поэтому получаем ошибки
Если нет желания указывать начальное или исходное значение, то необходимо объявить свойства как опционалы, но это совсем другая история, то есть туториал.
Теперь добавьте следующий блок в фигурные скобки:
Тут мы создали инициализатор для класса, который принимает два параметра. Инициализатор всегда называется ключевым словом init в Swift. Вы можете создать несколько инициализаторов, если вам так угодно, вот только они должны принимать разные параметры.
Смотрите, мы дали параметрам этого метода такие же имена как и свойствам класса. И, чтобы их не путать, мы поставили ключевое слово self.
Теперь, у нас нет никакого конфликта имен для свойства subtotal, так что нам больше не нужно добавлять self, потому что компилятор уже автоматически выводит его, когда это нужно. Для тех, кому не все равно откуда взялось subtotal = total / (taxPct + 1) поясним:
Теперь, добавьте следующий блок кода в фигурные скобки (после предыдущего в фигурных скобках):
Поясним, что для написания метода нам пригодится ключевое слово func. Когда мы создаем метод, мы должны указывать тип параметров явно и выходной тип метода, после результирующей стрелки ->.
Эта функция определяет размер налога, путем перемножения процента на общую сумму.
Теперь, добавляем следующий блок и снова в самый конец фигурных скобок:
Вот этот блок, когда представляет из себя новый метод, который выводит на экран три возможных варианта чаевых. Когда вы вызываете метод класса, то первый параметр необязательно должен иметь имя, но остальные должны.
Также, обратите внимание, что интерполяция строки не имеет ограничения в выводе переменных. Вы можете вписывать туда все что угодно — любые операции, которые только придут вам в голову!. Теперь, давайте добавим последний кусок кода в самый конец, после фигурных скобок:
Теперь, давайте добавим последний кусок кода в самый конец, после фигурных скобок:
Наконец-то, мы создали подобие калькулятора для чаевых Вот, что в итоге у нас должно было получиться в нашей «игровой площадке»:
Проверьте ваш Assistant Editor на наличие результата:
Равенство префиксов и суффиксов
Чтобы проверить, имеет ли строка определенный строковый префикс или суффикс, вызовите hasPrefix(_:) и hasSuffix(_:) методы, оба из которых принимают единственный аргумент типа String, и возвращают логическое значение.
В приведенных ниже примерах рассмотрим массив строк, представляющих местоположение сцены в первых двух актах Ромео и Джульетты Шекспира:
Вы можете использовать hasPrefix(_:) метод с массивом romeoAndJuliet для подсчета количества сцен в первом акте пьесы:
Точно так же, использование hasSuffix(_:) метода для подсчета количества сцен, которые происходят внутри или вокруг особняка Капулетти и клетки монаха Лоренцо:
Заметка
hasPrefix(_:) и hasSuffix(_:) методы используются для символ-к-символу канонического эквивалентного сравнения между расширенными наборами графем в каждой строке, как описано в главе «».
Юникод представления строк
Если строка Юникода записывается в текстовый файл или какое-либо другое хранилище, то скалярные величины Юникода в этой строке кодируются в одном из нескольких Юникод-определенных форм кодирования. Каждая форма кодирует строку мелкими кусками, известными как единица кода. Сюда включены: UTF-8 форма кодирования (которая кодирует строку в 8-битные блоки кода), UTF-16 форма кодирования (которая кодирует строку в качестве 16-битных блоков кода), и UTF-32 форма кодирования (которая кодирует строку в 32-битные единицы кода).
Swift предоставляет несколько разных способов доступа к отображению строк Юникода. Вы можете итерировать строки с for-in, для получения их индивидуальных Character значений, как расширенных наборов графем. Этот процесс описан в разделе «».
Кроме того, доступ к String значению в одном из трех других Юникод-совместимых отображений:
Набор UTF-8 единиц кода (можно получить доступ через свойство строки — utf8)
Набор UTF-16 единиц кода (можно получить доступ через свойство строки — utf16 )
Набор 21-битных скалярных значений Юникода, что эквивалентно форме кодирования UTF-32 (доступ через свойство строки — unicodeScalars)
Каждый пример, данный ниже, показывает разное отображение следующей строки, которая состоит из символов ‘D’, ‘o’, ‘g’, ‘!!’ («DOUBLE EXCLAMATION MARK», «U+203C») и , («DOG FACE», «U+1F436»):
Строковые литералы
Строковый литерал представляет собой последовательность символов, взятых в двойные кавычки, и выглядит вот так:
Строковые литералы не могут содержать неэкранированные двойные кавычки («), неэкранированный обратный слеш (\), возврат каретки или перевод строки.
Многострочный строковый литерал заключен тремя двойными кавычками и выглядит следующим образом:
В отличие от однострочного строкового литерала, многострочный строковый литерал может содержать неэксклюзивные двойные кавычки (), возврат каретки и перевод строки. Многострочный не может содержать три неизолированные двойные кавычки рядом друг с другом.
Разрыв строки после «»», который начинается в многострочном строковом литерале, не является частью строки. Разрыв строки перед «»», который завершает литерал, также не является частью строки. Чтобы создать многострочный строковый литерал, который начинается или заканчивается переводом строки, введите пустую строку в качестве ее первой или последней строки.
Многострочный строковый литерал может быть отступом, используя любую комбинацию пробелов и Tab-ов; этот отступ не входит в строку. Три кавычки — «»», которые завершают литерал, определяет отступ: каждая непустая строка в литерале должна начинаться с точно такого же отступа, который появляется перед закрытием «»». Вы можете добавить дополнительные пробелы после этого отступа.
Разрывы строк в многострочном строковом литерале нормализуются для использования символа перевода строки. Даже если ваш исходный файл имеет сочетание возврата каретки, все разрывы в строке будут одинаковыми.
В многострочном строковом литерале запись обратной косой черты (\) в конце строки опускает эту строку из строки. Любые пробелы между обратным слэшем и разрывом строки также опущены. Вы можете использовать этот синтаксис для жесткого переноса многострочного литерала строки в исходном коде без изменения значения результирующей строки.
Специальные символы могут быть включены в строковые литералы, используя следующие экранированные последовательные записи:
- Нулевой символ (\0)
- Обратный слеш (\\)
- Горизонтальная табуляция (\t)
- Перевод строки (\n)
- Возврат каретки (\r)
- Двойные кавычки (\»)
- Одиночные кавычки (\’)
- Скаляр Юникода (\u {n}), где n между первым и восьмым шестнадцатеричными символами
Значение выражения может быть вставлено в строку литерала, поместив выражение в скобки после обратного слеша (\). Интерполированное выражение может содержать строковый литерал, но не может содержать неэкранированный обратный слеш (\), возврат каретки или перевод строки.
Например, все следующие строковые литералы имеют одинаковое значение:
Строка, разделенная расширенными разделителями, представляет собой последовательность символов, заключенную в кавычки и в равное количество символов (#). Строка, разделенная расширенными разделителями, имеет следующий вид:
Специальные символы в строке, разделенной расширенными разделителями, отображаются в результирующей строке как обычные символы, а не как специальные символы. Вы можете использовать расширенные разделители для создания строк с символами, которые обычно используются для создания каких-то эффектов: генерация интерполяции строк, запуск последовательности символов или закрытие строки.
В следующем примере показан строковый литерал и строка, разделенная расширенными разделителями, которые создают эквивалентные строковые значения:
Если вы используете более одного числового знака для формирования строки, разделенной расширенными разделителями, не ставьте пробелы между числовыми знаками:
Многострочные строковые литералы, создаваемые с использованием расширенных разделителей, имеют те же требования к отступам, что и обычные многострочные строковые литералы.
Дефолтный выводимый тип строчного литерала является String. Для получения дополнительной информации о типе String, см. Строки и символы и .
Строковые литералы, которые объединяются с оператором +, делают это во время компиляции. Например, значения textA и textB в примере ниже, являются идентичными, и объединения во время компиляции не происходит.
Монады: не часть парадигмы ФП, а инструмент (необязательный)
Довольно часто ФП и монады используются в одном и том же приложении. Одно время я даже думал, что монады и есть функциональное программирование. Когда же я их понял (но это не точно), то сделал несколько выводов:
- они несложные;
- они удобные;
- понимать их необязательно, достаточно уметь применять;
- без них легко можно обойтись.
В Swift уже есть две стандартные монады — Optional и Result. Обе нужны для борьбы с сайд-эффектами. Optional защищает от возможного nil. Result — от различных исключительных ситуаций.
Рассмотрим на примере, доведенном до абсурда. Пусть у нас есть функции, возвращающие целое число из базы данных и от сервера. Вторая может вернуть nil, но мы используем неявное извлечение получая поведение времен Objective-C.
Продолжаем игнорировать Optional и реализуем функцию для суммирования этих чисел.
Вызываем итоговую функцию и используем результат.
Сработает ли этот пример? Ну, он определенно скомпилируется, а вот получим мы креш во время выполнения или нет — никому неизвестно. Этот код хорош, он отлично показывает наши намерения (нам необходима сумма каких-то двух чисел) и при этом не содержит ничего лишнего. Но он опасен. Поэтому так пишут только джуниоры и уверенные в себе люди.
Изменим пример, сделав его безопасным.
Этот код хорош, он безопасен. Используя явное извлечение, мы защитились от возможного nil. Но он стал громоздким, и среди безопасных проверок уже сложно разглядеть наше намерение. Нам все еще необходима сумма каких-то двух чисел, а не проверки безопасности.
На этот случай у Optional есть метод map, доставшийся ему от типа Maybe из Haskell. Применим его, и пример изменится.
Или еще компактнее.
Мы использовали map, чтобы преобразовать intFromServer в необходимый нам результат без извлечения.
Мы избавились от проверки внутри summInts, но оставили ее на верхнем уровне. Это сделано намеренно, так как в конце цепочки вычислений мы должны выбрать способ обработки отсутствия результата.
Извлечь
Использовать значение по умолчанию
Или вывести предупреждение если, данные не получены.
Теперь код в примере не содержит лишнего, как в первом примере, и безопасен, как во втором.
Но map не всегда работает так, как нужно
Если в map передать функцию, результат которой опционален, мы получим двойной Optional. Но нам не нужна двойная защита от nil. Достаточно одной. Решить проблему позволяет метод flatMap, это аналог map с одним отличием, он разворачивает матрешки.
Еще один пример, где map и flatMap не очень удобно использовать.
Что, если функция принимает два аргумента и они оба опциональные? Конечно, у ФП есть решение — это аппликативный функтор и каррирование. Но эти инструменты довольно неуклюже смотрятся без использования специальных операторов, которых нет в нашем языке, а писать кастомные операторы считается дурным тоном. Поэтому рассмотрим более интуитивный способ: напишем специальную функцию.
Она принимает в качестве аргументов два опциональных значения и функцию с двумя аргументами. Если оба опционала имеют значения, к ним применяется функция.
Теперь мы можем работать с несколькими опционалами, не разворачивая их.
У второй монады, Result, тоже имеются методы map и flatMap. А значит, с ней можно работать точно так же.
Собственно, это и роднит монады между собой — возможность работать со значением внутри контейнера, не извлекая его. На мой взгляд, это делает код лаконичнее. Но если вам не нравится, просто используйте явные извлечения, это не противоречит парадигме ФП.
История
Разработка Swift началась в июле 2010 года Крисом Латтнером при возможном сотрудничестве со многими другими программистами Apple . Swift взял языковые идеи «из Objective-C , Rust , Haskell , Ruby , Python , C # , CLU и слишком многих других, чтобы их перечислить». 2 июня 2014 года приложение Apple Worldwide Developers Conference (WWDC) стало первым публично выпущенным приложением, написанным на Swift. на языке программирования была выпущена для зарегистрированных разработчиков Apple , на конференции, но компания не обещают , что окончательная версия Swift будет исходный код совместим с тестовой версией. Apple планировала сделать доступными конвертеры исходного кода, если это необходимо для полной версии.
Swift Programming Language , бесплатное руководство на 500 страниц, также было выпущено на WWDC и доступно в Apple Books Store и на официальном сайте.
Swift достиг версии 1.0 9 сентября 2014 года, с Gold Master в Xcode 6.0 для прошивки . Swift 1.1 был выпущен 22 октября 2014 года одновременно с запуском Xcode 6.1. Swift 1.2 был выпущен 8 апреля 2015 года вместе с Xcode 6.3. Swift 2.0 был анонсирован на WWDC 2015 и стал доступен для публикации приложений в App Store 21 сентября 2015 года. Swift 3.0 был выпущен 13 сентября 2016 года. Swift 4.0 был выпущен 19 сентября 2017 года. Swift 4.1 был выпущен на 29 марта 2018.
Swift занял первое место в категории « Самый любимый язык программирования» в опросе разработчиков Stack Overflow в 2015 году и второе место в 2016 году.
В декабре 2015 года IBM анонсировала свой веб-сайт Swift Sandbox, который позволяет разработчикам писать код Swift на одной панели и отображать вывод на другой. Swift Sandbox устарел в январе 2018 года.
Во время Apple анонсировала эксклюзивное приложение для iPad под названием Swift Playgrounds , предназначенное для обучения людей программированию на Swift. Приложение представлено в виде интерфейса, на который обеспечивает обратную связь, когда строки кода размещаются в определенном порядке и выполняются.
В январе 2017 года Крис Латтнер объявил о своем уходе из Apple на новую должность в Tesla Motors , где ведущую роль в проекте Swift перейдет ветеран команды Тед Кременек.
Во время WWDC 2019 Apple анонсировала SwiftUI с Xcode 11, который обеспечивает основу для декларативного проектирования структуры пользовательского интерфейса на всех платформах Apple.
Официальные загрузки для дистрибутива Ubuntu Linux были доступны начиная с Swift 2.2, с добавлением дополнительных дистрибутивов, начиная с Swift 5.2.4, CentOS и Amazon Linux. Также есть неофициальный SDK и собственный набор инструментов для Android.
Платформы
Платформы, которые поддерживает Swift, — это операционные системы Apple ( Darwin , iOS , iPadOS , macOS , tvOS , watchOS ), Linux , Windows и Android .
История версий
Версия | Дата выхода | macOS | Linux | Окна |
---|---|---|---|---|
Swift 1.0 | 9 сентября 2014 г. | да | Нет | Нет |
Swift 1.1 | 22 октября 2014 г. | да | Нет | Нет |
Swift 1.2 | 8 апреля 2015 г. | да | Нет | Нет |
Swift 2.0 | 21 сентября 2015 г. | да | Нет | Нет |
Swift 2.1 | 20 октября 2015 г. | да | Нет | Нет |
Swift 2.2 | 21 марта 2016 г. | да | да | Нет |
Swift 2.2.1 | 3 мая 2016 г. | да | да | Нет |
Swift 3.0 | 13 сентября 2016 г. | да | да | Нет |
Swift 3.0.1 | 28 октября 2016 г. | да | да | Нет |
Swift 3.0.2 | 13 декабря 2016 г. | да | да | Нет |
Swift 3.1 | 27 марта 2017 г. | да | да | Нет |
Swift 3.1.1 | 21 апреля 2017 г. | да | да | Нет |
Swift 4.0 | 19 сентября 2017 г. | да | да | Нет |
Swift 4.0.2 | 1 ноября 2017 г. | да | да | Нет |
Swift 4.0.3 | 5 декабря 2017 г. | да | да | Нет |
Swift 4.1 | 29 марта 2018 г. | да | да | Нет |
Swift 4.1.1 | 4 мая 2018 г. | Нет | да | Нет |
Swift 4.1.2 | 31 мая 2018 г. | да | да | Нет |
Swift 4.1.3 | 27 июля 2018 г. | Нет | да | Нет |
Swift 4.2 | 17 сентября 2018 г. | да | да | Нет |
Свифт 4.2.1 | 30 октября 2018 г. | да | да | Нет |
Swift 4.2.2 | 4 февраля 2019 г., | Нет | да | Нет |
Swift 4.2.3 | 28 февраля 2019 г., | Нет | да | Нет |
Swift 4.2.4 | 29 марта 2019 г., | Нет | да | Нет |
Swift 5.0 | 25 марта 2019 г., | да | да | Нет |
Swift 5.0.1 | 18 апреля 2019 г., | да | да | Нет |
Swift 5.0.2 | 15 июля 2019 г., | Нет | да | Нет |
Swift 5.0.3 | 30 августа 2019 г., | Нет | да | Нет |
Swift 5.1 | 10 сентября 2019 г., | да | да | Нет |
Swift 5.1.1 | 11 октября 2019 г., | Нет | да | Нет |
Swift 5.1.2 | 7 ноября 2019 г., | да | да | Нет |
Swift 5.1.3 | 13 декабря 2019 г., | да | да | Нет |
Swift 5.1.4 | 31 января 2020 г. | Нет | да | Нет |
Swift 5.1.5 | 9 марта 2020 г. | Нет | да | Нет |
Swift 5.2 | 24 марта 2020 г. | да | да | Нет |
Swift 5.2.1 | 30 марта 2020 г. | Нет | да | Нет |
Swift 5.2.2 | 15 апреля 2020 г. | да | да | Нет |
Swift 5.2.3 | 29 апреля 2020 г. | Нет | да | Нет |
Swift 5.2.4 | 20 мая, 2020 | да | да | Нет |
Swift 5.2.5 | 5 августа 2020 г. | Нет | да | Нет |
Swift 5.3 | 16 сентября 2020 г. | да | да | да |
Swift 5.3.1 | 13 ноября 2020 г. | да | да | да |
Swift 5.3.2 | 15 декабря 2020 г. | да | да | да |
Swift 5.3.3 | 25 января 2021 г. | Нет | да | да |
Swift 5.4 | 26 апреля 2021 г. | да | да | да |
Swift 5.4.1 | 25 мая 2021 г. | Нет | да | да |
Swift 5.4.2 | 28 июня 2021 г. | да | да | да |
Swift 5.4.3 | 9 сентября 2021 г. | Нет | да | да |
Swift 5.5 | 20 сентября 2021 г. | да | да | да |