Обновление демонстрационных примеров и решений Заданий курса 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 ( о ней подробнее в самом конце этого поста).


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

Вам предлагается выбрать, что вы хотите перевести в новую версию Swift:

Допустим, вы выбираете все targets для преобразования в Swift 4. Далее следуем рекомендуемым шагам:

 Следующий шаг:

Нам представляют изменения в коде, сделанные автоматической миграцией. Обычно мы соглашаемся с этим и запоминаем:

Устанавливаем версию iOS 11:

Запускаем приложение, и у нас появляются предупреждения о том, что автоматическое экспонирование классов, методов и свойств в Swift 4 упразднено и нам требуется ЯВНО указать для них атрибут @objc:

Что мы и делаем, например, в классе GraphView:

Остается одно предупреждение:

От него мы избавляемся в настройках проекта:

Эту операцию нужно проделать со всеми тестами:

Для того, чтобы вас не одолевали сообщения на консоли, необходимо пойти в меню Product -> Scheme -> (Указывается ваш проект) -> Edit Scheme
screen-shot-2016-09-16-at-11-57-53-am
И добавить одну строку в переменные окружения Environment Variables:
screen-shot-2016-09-16-at-12-00-49-pm
С приложениями, содержащими обращение к Twitter, все сложнее.

Миграция от iOS Social фреймворк к Twitter Kit 3

iOS 11 больше не поддерживает использование Twitter с помощью встроенного фреймворка Social. Вместо этого  вы можете использовать Twitter Kit 3 и Twitter API. Я покажу вам как выполнить миграцию от старого кода со встроенным Social к новому с Twitter Kit 3 и Twitter API.

  • Загружаем Twitter Kit

Инструкция по загрузке Twitter Kit доступна на странице installation.

  1. Загрузите и разархивируйте Twitter Kit.
  2. Поместите содержимое в корень вашего проекта в Xcode 9. Убедитесь, что вы используете опцию «Copy items if needed» при копировании.

    1. 3. Добавьте TwitterKit в раздел “Embedded Binaries” в установках вашего проекта в Xcode 9.

    1. 4. Добавьте TwitterKit и TwitterCore в раздел “Linked Frameworks and Libraries” в установках вашего проекта в Xcode 9

  • Pегистрируем свое приложение на консоли приложений Twitter

Для использования возможностей Twitter в вашем приложении, необходимо создать API ключ. Для этого зайдите на Twitter apps dashboard и зарегистрируйте приложение, в котором вы собираетесь использовать Twitter:

Для обеспечения полноценной iOS функциональности, необходимо:

a) обеспечить Read and Write разрешение (для нашего приложения достаточно Read only разрешения):

б) По соображениям приемственности вы ДОЛЖНЫ установить callback URL для возможной авторизации пользователя. Используйте twitterkit-[consumer key]://  в вашем приложении:

 

 

c) убедитесь, что вы отметили  “Allow this application to be used to sign in with Twitter” в закладке Settings:

Как только SDK установлен и ключи для приложения зарегистрированы, скопируйте ключи из раздела “Keys and Access Tokens” страницы вашего приложения:

И вставьте их в Twitter.plist:

Внутри AppDelegate инициализируем Twitter Kit с помощью ключей вашего Twitter приложения ( customer_key и customer_secret) либо непосредственно:

либо используя файл Twitter.plist:

Если в Twitter сессии нет ни одного пользователя, запрашиваем его username  и пароль с помощью Safari:

Для обеспечения вызова  Safari необходимо добавить в AppDelegate  метод:

Конфигурируем Info.plist нашего приложения

В Info.plist вашего приложения добавьте URL Schemes после <dict>:

Инициализация Twitter Kit закончена.

Далее делаем небольшие исправления в коде фреймворка Twitter, который предоставил профессор Пол Хэгерти в классе Request:

И все работает, как и раньше.

Решения Заданий 4 и 5 с новым Twitter Kit находятся в папке iOS11 на Github.

Демонстрационные примеры SmashtagL9 и SmashtagL11 с новым Twitter Kit находятся в папке iOS11 на Github.

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

      • Татьяна, я хочу просто сказать большое вам спасибо -)
        Я вас не очень давно нашла, но вы просто монстр и такая оперативная! Спасибище!

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