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

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

В результате этого я пришла к ВЫВОДУ.


Если вы изучаете стэнфордский курс CS193P Fall 2017-2018 «Developing  iOS 11 Apps with Swift», то смело открывайте Xcode 10 и создавайте проекты для iOS 12 на Swift 4.2. Весь код, который предлагает профессор, будет прекрасно работать.


Демонстрационные примеры для Swift 4.2, iOS 12 и Xcode 10 находятся на Github.

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

Надо сказать, что большинство демонстрационных примеры не претерпели никаких изменений в коде для Swift 4.2 и iOS 12 за исключением 1 или 2-х методов в файле AppDelegate.swift, о которых я расскажу ниже.

В принципе в Xcode 10 вы можете запускать «родные» демонстрационные примеры курса  CS193P Fall 2017-2018 «Developing  iOS 11 Apps with Swift» , написанные профессором на Swift 4.0 для iOS 11.0. Но, к сожалению, начиная с версии iOS 11.2 и вплоть до iOS 11.4  появилась ошибка при применении механизма  Drag & Drop к строкам с атрибутами NSAttributedString, связанная с тем, что при сбросе Drop строки с атрибутами NSAttributedString она теряет свой шрифт. Это не существенно, но все же разрушало необыкновенную красоту и логичность демонстрационных примеров EmojiArt, связанных с созданием живописной картины из эмоджи и фонового изображения. Это Лекции 11-17. Для того, чтобы сгладить неприятные последствия этой ошибки, я вынуждена была сделать совсем крохотную «подпорку», состоящую из 3-4-х строк кода, как бы «восстановливающего» шрифт, утерянный строкой с атрибутами NSAttributedString. Это делалось в единственном файле EmojiArtView.swift демонстрационных примеров для Лекций 11-17:

 

В iOS 12 и соответственно в Swift 4.2 эта ошибка исчезла, и мы можем вернуться к первоначальному коду, предложенному профессором на Лекциях 11-17:

Поэтому, если вы изучаете стэнфордский курс  CS193P Fall 2017-2018 «Developing  iOS 11 Apps with Swift», то смело открывайте Xcode 10 и создавайте проекты для iOS 12 на Swift 4.2. Весь код, который предлагает профессор, будет прекрасно работать.

Но помимо этого, вы сможете использовать те усовершенствования, которые появились в Swift 4.2 и которые прекрасно изложены в статье «Что нового в Swift 4.2», расположенной на этом сайте.

Например, сильно обновилась то, что связано со случайными числами. Теперь для каждого ТИПА (Int, Double, Float и т.д.) есть метод random (in:)и мы можем это использовать:

Кроме того, нет необходимости писать метод shuffle() для последовательностей, он уже там встроен и т.д. Так что версия iOS 12 для демонстрационных примеров и решений Заданий отличается еще и тем, что там представлены некоторые рекомендации для улучшения кода в Swift 4.2.

Вы можете сами в любой момент преобразовать любой ваш проект из iOS 11 в iOS 12, если откроете его в Xcode 10. Далее устанавливаете версию iOS 12 в настройках проекта:

Как только вы это сделаете, появится предупреждение о возможности использования текущей версию Swift 4.2. Кликаем на нем дважды …

… и начинает работает автоматическая миграция.

Обычно это всегда одна и та же ошибка в методе didFinishLaunchingWithOptions в файле AppDelegate.swift, и нам предлагают согласиться с изменениями или их отвергнуть:

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

И это все.

В приложениях, связанных с работой с документами  UIDocument требуется согласиться с изменениями в 2-х методов  didFinishLaunchingWithOptions и open inputURL в файле AppDelegate.swift:

Мы соглашаемся с этими изменениями.

Еще компилятор Swift 4.2 предупреждает, что ограничения NSLayoutConstraint, устанавливаемые программным образом, должны быть НЕ weak:

И все. Запускаем приложение и создаем эмоджи картинку:

При использовании таблицы Table View с текстовым полем Text Field в Задании 5 я сталкнулась с тем, что текстовое поле, имеющее зазоры, вызывает ошибку конфликта ограничений, которую очень легко устранить, понизив приоритет вертикальных ограничений до 999:

Xcode 10 и Swift 4.2 прекрасно работают, очень быстрая компиляция, очень понятные сообщения об ошибках. Apple проделала хорошую работу.

Обновление демонстрационных примеров и решений Заданий курса CS193P Fall 2017 до Swift 4.2 и iOS 12: 12 комментариев

  1. Татьяна, последней версии стэнфордского курса уже около года. Как вы оцениваете шансы на его обновление в ближайшее время? Когда по вашему мнению появится новая версия? Спасибо!

    • Первоначально в начале лета 2018 года на сайте Стэнфорда было заявлено два курса CS193P на сезон 2018-2019 : осень 2018 и весна 2019. Потом в конце лета остался один — весна 2019, а осень 2018 исчез. Так что в лучшем случае нас ждет весна 2019.

      скорее всего мы увидим его на iTunes в середине мая.

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

    Есть несколько вопрос, по возможности ответьте на них пожалуйста.
    1. Дано — младший брат, интересуется программированием, учится в вузе, английский базовый (но начал его прокачивать). Порекомендовал ему ios, мобильную разработку, вроде зацепило. Что можете порекомендовать? С чего начать?
    2. Есть ли вас твиттет, канал в мессенджере или иной канал связи где возможно вы выкладывает важные новости/изменения в сфере iOS разработке/обучения?
    3. Перевод над проектом Swift 4 — Stanford CS193P скорее мертв чем жив?

    • Начну с третьего вопроса:

      3. Текущий курс CS193P более чем актуален. Если вы откроете Xcode 10 и начнете программировать для iOS 12, вам не придется менять ни строчки кода, написанного профессором. Другое дело, что ваш брат, не имея навыков программирования, вряд ли продвинется далее Лекции 3. Однако на первых двух Лекцииях профессор объясняет буквально каждую букву и рассказывает очень занимательно. Первая Лекция этого курса выложена в открытом доступе на этом сайте, так что предоставьте ее вашему брату. Он почувствует сразу, что значит быть iOS разработчиком и после первой же Лекции создаст небольшое приложение.
      Но далее пойдут вещи, которые требуют определенных навыков программирования и особенно объектно-ориентированного программирования.
      Хотя, если вы полностью заканчиваете этот стэнфордский курс с домашними заданиями, то можете претендовать на Junior Developer. Некоторые пользователи так и сделали — получили Junior Developer.

      1. Есть множество интересных начальных курсов по Swift и iOS, так как просто читать документацию достаточно скучно.

      Сейчас появился прекрасный ресурс на разных языках у Пола Хадсона https://github.com/twostraws/HWSTranslation/tree/master/ru. Там все на русском и он будет расширяться,

      Еще я бы рекомендовала два курса для начинающих на Udemy (английский язык):

      https://www.udemy.com/ios-12-app-development-bootcamp/learn/v4/overview
      https://www.udemy.com/ios12course/

      На распродаже они стоят 9.99$

      Прекрасный ресурс https://www.raywenderlich.com/, с которого все начинали. Там много всего и для начинающих, и для профессионалов.
      Если вам интересуют ресурсы на русском языке, то наберите в Google «Swift 4 iOS 11» и смотрите ресурсы на русском.
      Я ничего не могу сказать о них, так как подробно не знакомилась.
      Есть один очень хороший ресурс https://proswift.ru/ на русском, но там просто разрозненные статьи и его удобно использовать как справочник.

      2. Новостных ремурсов также много:

      https://andybargh.com/swiftdevelopments/ (Swift developer)

      https://ios-goodies.com (iOS goodies)
      https://iosdevweekly.com/issues
      https://useyourloaf.com/categories/swift/

      Сам язык Swift находится в Open Source и за его разработкой можно следить на сайте https://swift.org/

  3. Спасибо за развернутые ответы.
    Не большое уточнение, по поводу 3-го вопроса, будет ли озвучка всех лекций на русский Swift 4 — Stanford CS193P Developing apps for iOS 2017?

    • В прежнем виде на iTunes не появится.
      Сейчас ( с 3 по 8 июня) идет конференция разработчиков Apple WWDC 2019 и там показали, что iTunes в прежнем виде существовать в новой macOs Catalina не будет- его разбили на 3 отдельных приложения: Apple Music (музыка), Apple Podcast (радио) и Apple TV (фильмы). Там нет места курсам обучения.
      Кроме того, на конференция разработчиков Apple WWDC 2019 Apple представила потрясающую новую технологию разработки UI на Swift с именем SwiftUI, которая призвана совершить революцию в разработке iOS приложений.
      Так что ни команда iTunes, ни команда Apple не заинтересованы в обучающем курсе cs193p 2018-2019 spring.
      Но этот курс снимают на видео для студентов Стэнфорда, так что, возможно, этот курс выложит Stanford на своих ресурсах.
      Я буду это отслеживать, но сейчас все сообщество Swift озабочено изучением новой технологии SwiftUI.

  4. Здравствуйте! Ищу в просторах интернета о новом курсе 2018-2019 совсем ничего не нашел. Да зря айтюнс убирают или убрали, даже на почту профессору написал оказывается его почта неработает

    • Я уже писала, что новый Стэнфордский курс Весна 2019 не будет выложен в ITUNES не только потому. что iTunes реконструируется, а скорее всего потому, что Apple сейчас внедряет новую технологию разработки UI (интерфейса) — SwiftUI, которую провозгласил на конференции WWDC 2019 и поэтому в старой технологии с помощью storyboard не заинтересована. Профессору придется что-то менять кардинально в своем курсе, что он всегда и делает. На 2020 год пока нет расписания курсов в Стэнфорде, посмотрим. Я собираюсь посвятить SwiftUI несколько статей на этом сайте, это действительно очень-очень здорово.

    • Есть еще информация на эту тему:

      I asked Paul Hegarty this exact question in person, as I live near the Stanford campus and am attending the lectures out of curiosity and for fun. The current term is not being filmed, and he doesn’t know when the next iteration of the course will be on iTunes U. He also mentioned that iOS 11 SDK had more changes to cover than iOS 12, so the most recent CS 193P available online will still be evergreen and the intent of the course is to serve as an introduction anyway.

      Hi Guys, the course is actually been filmed see below the links to the most recent lectures:

      http://cs193p.stanford.edu/restricted/Spring19L10.mp4
      http://cs193p.stanford.edu/restricted/Spring19L9.mp4

      Problem is that is necessary to have a Stanford ID to have access to it.

      Let’s hope Stanford decides to make it public.

Обсуждение закрыто.