Лекция 1 CS193P Fall 2017 — Введение в iOS 11, Xcode 9 и Swift 4. Часть 1.

На сайте представлен полный неавторизованный хронометрированный конспект Лекции 1 на русском языке курса  Разработка iOS 11 приложений с помощью Swift 4.

Первая часть — 0 — 50 минута находится в этом посте,
Вторая часть — 50 — 82 минута — находится  здесь.

Код демонстрационного примера для Лекции 1 находится на Github для iOS 11  и на Github для iOS 12 в папке Concentration L1

На Лекции 1 профессор Пол Хэгерти представляет этот курс, предварительные требования для его успешного прохождения и дает беглый обзор iOS 11. Затем полностью погружается в очень большой и продолжительный демонстрационный пример.

Темы демонстрационного примера:

  • Создание проекта Project в Xcode 9
  • Построение пользовательского интерфейса (UI)
  • iOS симуляторы
  • print (вывод на консоль, используя \( ) нотацию)
  • Определение класса в Swift, включая определение переменных экземпляра класса и методов
  • Связывание свойств (переменных экземпляра класса) в Swift коде с элементами пользовательского интерфейса UI (Outlets)
  • Привязка элементов UI к методам в коде Swift (Actions)
  • Доступ к iOS документации из кода
  • Автоматическое выполнение кода при каждом изменении значения свойства
  • Optionals (?, неявное развертывание путем декларирования со знаком !, явное развертывание с помощью ! и if let)
  • Array

За этими сухими пунктами скрывается блестящее изложение основных синтаксических конструкций Swift, начиная от самых элементарных и заканчивая такими сложными и непривычными как Optional и неявно развернутое Optional (implicitly unwrapped  Optional). Очень небольшое количество языков программирования имеет концепцию Optional. Это действительно крутая концепция, которую обязательно нужно понять, ибо в Swift она встречается повсюду, ей пронизаны всех iOS APIs. Но требуется некоторое время, чтобы к ней привыкнуть и эффективно ее использовать.

Попутно профессор подробно рассказывает про среду разработки Xcode 9, симуляторы, и показывает их новые возможности, а также предостерегает от распространенных ошибок, связанных с «подводными камнями» Xcode 9.
Поэтому для начинающих изучать Swift (а не программирование как таковое) Лекции 1 и 2 являются must have. Но даже если вы опытный разработчик iOS, вы все равно обнаружите в Лекции 1 что-то новое для себя.
В Лекции 2 продолжится демонстрационный пример, начатый на этой Лекции.

Читать далее

Появился новый стэнфордский курс  «Developing  iOS 11 Apps with Swift» для Swift 4

Стэнфордский курс  «Developing  iOS 11 Apps with Swift» теперь доступен на iTunes. Это обновление предыдущего курса по  «Developing iOS 10 Apps with Swift». Пока выложены 6 лекций, 2 домашних Задания на программирование и 2 Задания на чтение.

 

Мы будем предоставлять на этом сайте все необходимые материалы для стэнфордского курса «Developing  iOS 11 Apps with Swift»:

Видео можно смотреть в Youtube.

Демонстрационные примеры находятся на Github.

Тексты заданий, а также слайды для Лекций выкладываются на

iOS 11 Задания

Если вас интересуют русскоязычные не авторизованные переводы Лекций и Заданий, а также коды демонстрационных примеров и Заданий, то следите за страницей iOS 11 + Swift 4.

Обновление демонстрационных примеров и решений Заданий курса CS193P Winter 2017 до Swift 4 и iOS 11

Вышли официальные версий Swift 4iOS 11 и Xcode 9.  Поэтому я решила на своем сайте обновить демонстрационные примеры, сопровождающие замечательный стэнфордский курс  CS193P Spring 2017  «Developing  iOS 10 Apps with Swift»,  для  Swift 4.0 и iOS 11.

Демонстрационные примеры для Swift 4, iOS 11 и Xcode 9 находятся на Github.

Решения Заданий  для курса CS193P Spring 2017  «Developing  iOS 10 Apps with Swift» для Swift 4, iOS 11 и Xcode 9 находятся на Github.

Надо сказать, что большинство демонстрационных примеров не претерпели никаких изменений в коде для Swift 4, за исключением добавления атрибута @objc для методов, сопровождающих жесты.

Однако очень значительные изменения пришлось внести для iOS 11 в демонстрационные примеры Smashtag L9 и Smashtag L11, так как в iOS 11 больше не поддерживаются accounts для социальных сетей Twitter, Facebook, Flickr, Vimeo. Более того, iOS 11 больше не поддерживает использование Twitter с помощью встроенного фреймворка Social. Вместо этого  вы можете использовать Twitter Kit 3 и Twitter API. Поэтому в наборе демонстрационных примеров для Swift 4 для Лекций 9 и 11 присутствуют две папки:  iOS10 и iOS11. В папке iOS10 находится привычная нам версия, которую демонстрировал профессор на лекциях с использование фреймворка Twitter, созданном на основе  Social. А в папке iOS11 находится версия с использованием Twitter Kit 3 и Twitter API ( о ней подробнее в самом конце этого поста).

Читать далее

Что нового в Swift 4.


Swift 4.0 в Xcode 9 уже доступен, и он принес нам несколько приятных изменений. Конечно, мы не получили ни такой кардинальной переработки синтаксиса, как в прошлом году для Swift 3, ни таких захватывающих возможностей, как в Swift 2, но есть несколько замечательных добавлений, которые могут существенно улучшить ваш код. Давайте посмотрим на них!

Сейчас очень много материала на тему «Что нового в Swift 4». Я взяла за основу знаменитую статью Ole Begemamm «Playground: What’s new in Swift 4.»,  дополнила ее очень интересными примерами из других статей, предоставив в ваше распоряжение Playground с примерами на русском языке.

Читать далее

Руководство по проектированию Swift API (Swift API design guidelines)

Если вы разрабатываете приложения на Swift, в том числе и приложения, связанные с выполнением Заданий стэнфордского курса, вам необходимо знать принципы проектирования API в Swift, которые отличаются от принципов проектирования API в Objective-C и других языках.  И это зафиксировано в руководстве по проектированию Swift API «API Design Guidelines«, выпущенному Apple. Кулиничев Евгений  любезно предоставил перевод этого руководства на русский язык для размещения на этом сайте. Вы можете посмотреть его в Google Doc  или  скачать в PDF формате для изучения в offline:

Swift API design guidelines.pdf

Но прежде, чем вы приступите к его изучению, необходимо дать вам некоторые фундаментальные идеи, которые были заложены в этот документ:

  • Обеспечение понятности кода в точке его использования
  • Понятность кода более важна, чем его краткость
  • Создание самодокументируемого API

Код пишется один раз, а читается многократно. Очень важно, чтобы Swift код был читаемым и понятным в точке использования. Хотя кажется, что это очень знакомое требование, оно отличается от правил проектирования API в Objective-C. В Swift мы не хотим унаследовать многословный стиль Objective-C, в котором вся необходимая информация передается через хорошо сконструированный API, и редко бывает хорошо читабельной в точке использования. В Swift недостаточно, чтобы API был хорошо читабельным в точке определения; он должен быть читабельным и иметь смысл в различных точках применения. И вы увидите в руководстве, как это достигается. Читать далее

Парсим JSON в Swift 4 на примерах.

Самая замечательная вещь, которую мы получили в Swift 4 — это протокол Codable, который представляет собой typealias протоколов Encodable и Decodable, и классы JSONDecode и JSONEncode. Благодаря этому вы теперь можете преобразовывать множество JSON объектов, а также Property Lists в эквивалентные структуры Struct и классы Class без единой строки дополнительного кода. Наконец-то Swift 4 и новый Foundation ответили на вопрос, как нужно парсить JSON в Swift.

Между прочим, если вы наберете для поиска строку «swift json library», то вы получите в  Github порядка 75 замечательных репозиториев. Но новое «родное» Codable решение Apple  в Swift 4 превосходит их все. Далее в статье я сосредоточусь на JSON, потому что это наиболее значимая задача для разработчиков, и представлю  примеры на Playground.

 Код можно посмотреть на Github.

Основы.

Я начну с примера, представленного в знаменитой статье Сhris Eidhof «Parsing JSON in Swft» (перевод здесь) ( 2014 г.), в которой впервые была сделана попытка создания в Swift JSON парсера на основе понятий функционального программирования, но это было сложное решение. Позже Apple  представила свой способ парсинга JSON с помощью класса JSONSerialization, который также отличался громоздкостью.

Сейчас мы увидим, как в Swift 4 эта проблема решается 3 строками кода.

Читать далее

Лекция 17 CS193P Winter 2017 — Accessibility (доступность для людей с ограниченными возможностями).

Лекция 17 посвящена инструментам, которые разработала Apple, чтобы адаптировать приложения разработчиков для людей с ограниченными возможностями. Лекцию читает бывший студент Стэнфорда, а ныне член команды Apple по Accessibility (Доступности).

Apple большое внимание уделяет возможностям работы пользователей с ограниченными возможностями с iOS устройства, рассматривая  4-х различных группы таких людей:

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

2-ая группа связана с физическими и моторные навыки, когда у людей наблюдается непроизвольное тряска конечностей или болезнь Паркинсона или невозможность точно исполнять жесты, включая тех людей, которые парализованы или имеют ограниченный набор цифр, с помощью которых они могут взаимодействовать с системой. Например, единственный палец на руке или единственный палец на ноге или только голову, как в случае с Sady, видео которой показывается на Лекции 17.

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

4-ая группа — слух. Это люди с широким спектром инвалидности: от плохо слышащих до абсолютно глухих.

Все, что разработала Apple для людей с ограниченными возможностями уже присутствует на ваших iOS устройствах, вы можете их включить и ничего дополнительного для этого не требуется. Просто нужно выбрать в  Установках (Settings) закладку General и кликнуть на Accessibility.В результате вы обнаружите длинный список возможностей, доступных на вашем устройстве.

Читать далее

Лекция 16 CS193P Winter 2017 — Alerts (экстренные сообщения) и Action Sheets (списки действий), Notifications (уведомления), Application Lifecycle («жизненный цикл» приложения) и Persistence (постоянное хранение).

В Лекции 16 освещаются разнообразные темы:

  • Экстренные сообщения Alerts и списки действий Action Sheets
  • Уведомления Notifications
  • “Жизненный цикл” приложения (UIApplication, AppDelegate, Info.plist, Capabilities)
  • Постоянное хранение Persistence

Alerts (экстренные уведомления) и Action Sheets (списки действий)

В iOS существуют два типа механизмов, которые позволяют с помощью “всплывающего окна” что-то спросить у пользователя. Один называется Alert  (экстренное сообщение), а другой — Action Sheets (список действий).

Они используют один и тот же API. Имеется некоторая разница между этими двумя механизмами. Наиболее легкий способ увидеть разницу между Alert и Action Sheets — это посмотреть пример, представленный на слайдах. В качестве такого примера Пол Хагерти взял уже знакомое нам приложение Cassini и на нем продемонстрировал все возможности Alert и Action Sheets. Особое внимание уделяется появлению Action Sheets в Popover «окошке» как на iPhone, так и на iPad. Профессор показывает демонстрационный пример использования экстренных сообщений Alert с текстовым полем внутри для нашего старого товарища — приложения FaceIt.

Читать далее

Лекция 15 CS193P Winter 2017 — Еще больше о Segues.

Вся Лекция 15 посвящена segues. Мы уже изучили на прошлых Лекциях Show segue и Show Detail segue, которые работают в Navigation Controllers и Split View Controllers.

На Лекции 15 изучаются все оставшиеся типы segues: Modal, Unwind, Popover, Emded.

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

Читать далее

Лекция 14 CS193P Winter 2017 — Демонстрационный пример Dynamic Animation.

Лекция 14 полностью посвящена демонстрационному примеру, показывающему все возможности Dynamic Animation на примере космической видеоигры Asteroids с астероидами и космическим кораблем. Динамическая анимация Dynamic Animation используется по большей части в UI для таких вещей, как анимация на iPhone всплывающей снизу панели, которая ударяется о верхний край, немного колеблется и “замирает”. Для написания таких игр, например, SpriteKit и другие. Но  профессор выбрал создание видеоигры для демонстрации возможностей динамической анимации Dynamic Animation потому, что это занимательно и это дает возможность насыщенно показать множество различных “поведений” их взаимодействие в сложном составном «поведении».

В демонстрационном примере показан целый спектр «поведений»:  столкновения UICollisionBehavior, гравитации UIGravityBehavior и мета-поведения UIDynamicItemBehavior, толчок UIPushBehavior, а также создание пользовательского составное сложное «поведение», которое является subclass UIDynamicBehavior. Показана работа делегата столкновений UICollisionBehaviorDelegate. По ходу дела, как всегда, Пол Хэгерти демонстрирует синтаксические конструкции Swift в действии:  lazy vars,  инициализация с помощью выполняемых замыканий, разрыв циклических ссылок в памяти с помощью списка захвата [ unowned self ]  в замыканиях и когда такой способ разрыва является безопасным.

Читать далее