Проект Swift 4 использует библиотеки Swift 3
Я пытаюсь использовать инфраструктуру SwiftyDropbox в проекте, который использует Swift 4.2, но SwiftyDropbox все еще использует Swift 3. Как включить библиотеки или платформы, использующие предыдущие версии Swift?
2 ответа
Xcode не предоставляет опцию по умолчанию для компиляции одного модуля в конкретной версии Swift. Либо вы можете скомпилировать весь проект в Swift 3 или 4+. Таким образом, чтобы решить вашу проблему, вы должны пойти с cocoapods. Как только вы настроите модуль pod, вы можете создать один модуль для компиляции с определенной версией Swift.
Я не эксперт в этом, и я не пробовал, но это мое понимание: если вы разделите свое приложение на несколько фреймворков, одна или несколько ваших фреймворков могут быть нацелены на Swift 3, а другие на Swift 4.2. Ваши фреймворки Swift 3 могут затем ссылаться на сторонние фреймворки Swift 3, которые вы хотите использовать.
Я предполагаю, что Xcode позаботится о привязках между вашими собственными фреймворками, которые отличаются в версии Swift, так как вы сами компилируете их как целевые зависимости.
Наконец, если сторонний фреймворк с открытым исходным кодом и достаточно мал, рассмотрите возможность его разветвления и перехода на Swift 4.2 самостоятельно. Я использовал этот подход для некоторых небольших фреймворков (например, Netfox) - для более крупных, таких как Realm, мне просто нужно было подождать, пока они это сделают.