Проект Swift 4 использует библиотеки Swift 3 - PullRequest
0 голосов
/ 24 октября 2018

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

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

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

  1. Открыть .xcworkspace
  2. Выбрать Pods.xcproj
  3. В RHS,в разделе «Цели» выберите «SwiftyDropbox».
  4. Перейдите к «Параметры сборки» и найдите «Swift Language Version» enter image description here
  5. Изменить версию на «Swift 3 ".
  6. Удалите" Производные данные "и" Чистый проект ".
  7. Наконец, постройте, и вы не увидите никаких ошибок.
0 голосов
/ 24 октября 2018

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

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

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

...