Проект Swift 4 использует библиотеки Swift 3

Я пытаюсь использовать инфраструктуру SwiftyDropbox в проекте, который использует Swift 4.2, но SwiftyDropbox все еще использует Swift 3. Как включить библиотеки или платформы, использующие предыдущие версии Swift?

2 ответа

Xcode не предоставляет опцию по умолчанию для компиляции одного модуля в конкретной версии Swift. Либо вы можете скомпилировать весь проект в Swift 3 или 4+. Таким образом, чтобы решить вашу проблему, вы должны пойти с cocoapods. Как только вы настроите модуль pod, вы можете создать один модуль для компиляции с определенной версией Swift.

  1. Открыть.xcworkspace
  2. Выберите Pods.xcproj
  3. На RHS в разделе "Цели" выберите "SwiftyDropbox".
  4. Перейдите к "Build Settings" и найдите "Swift Language Version"
  5. Измените версию на "Swift 3".
  6. Удалите "Производные данные" и "Чистый проект".
  7. Наконец, сборка, и вы не увидите ошибок.

Я не эксперт в этом, и я не пробовал, но это мое понимание: если вы разделите свое приложение на несколько фреймворков, одна или несколько ваших фреймворков могут быть нацелены на Swift 3, а другие на Swift 4.2. Ваши фреймворки Swift 3 могут затем ссылаться на сторонние фреймворки Swift 3, которые вы хотите использовать.

Я предполагаю, что Xcode позаботится о привязках между вашими собственными фреймворками, которые отличаются в версии Swift, так как вы сами компилируете их как целевые зависимости.

Наконец, если сторонний фреймворк с открытым исходным кодом и достаточно мал, рассмотрите возможность его разветвления и перехода на Swift 4.2 самостоятельно. Я использовал этот подход для некоторых небольших фреймворков (например, Netfox) - для более крупных, таких как Realm, мне просто нужно было подождать, пока они это сделают.

Другие вопросы по тегам