Вышли официальные версий Swift 4, iOS 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…
И добавить одну строку в переменные окружения Environment Variables:
С приложениями, содержащими обращение к 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.
- Загрузите и разархивируйте Twitter Kit.
- Поместите содержимое в корень вашего проекта в Xcode 9. Убедитесь, что вы используете опцию «Copy items if needed» при копировании.
-
- 3. Добавьте TwitterKit в раздел “Embedded Binaries” в установках вашего проекта в Xcode 9.
-
- 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.
День добрый!
В ITunes-U появился новый курс.
https://itunes.apple.com/ru/course/developing-ios-11-apps-with-swift/id1309275316
По 11 версии из Стенфорда от Хегарти. Когда планируется начать перевод?
Уже начала.
Татьяна, я хочу просто сказать большое вам спасибо -)
Я вас не очень давно нашла, но вы просто монстр и такая оперативная! Спасибище!