Ответ 1
Выберите цель, goto Build Settings > Swift Language Version
:
Заметки о выпуске Xcode 9 говорит, что поддержка Swift 3 поддерживается:
Один компилятор для Swift 4 и Swift 3, объекты Swift 4 и Swift 3 могут быть скомпилированы вместе в одном проекте.
Я установил бета-версию Xcode 9. Но когда я нажимаю Build, он показывает кучу ошибок. Нужны ли некоторые специальные препараты при использовании Swift 3 в Xcode 9?
UPD:
Модуль, скомпилированный с Swift 3.1, не может быть импортирован в Swift 4.0
Выберите цель, goto Build Settings > Swift Language Version
:
Xcode 9 и Xcode 8.3. # обе версии поддерживают Swift 3.2. Если ваш существующий проект имеет язык по умолчанию Swift 3.2, то он будет работать в Xcode 9 с небольшими изменениями. Но если ваш проект поддерживает Swift версии 3.1 или ниже, вы должны перенести его на 3.2 или 4.0, чтобы работать с Xcode 9
Проект ► (Выберите цель проекта) ► Настройки сборки ► (введите "swift" в панели поиска) Язык Swift для компилятора ► Быстрая версия языка ► Нажмите "Список языков", чтобы открыть его.
Преобразуйте исходный код с Swift 3.2 до 4.0. Чтобы упростить перенос кода, выполните следующие действия: (это поможет вам скрыться в последней версии быстрой поддержки, поддерживаемой вашим Xcode Tool)
(Xcode) Меню: Редактировать ► Скрытый ► В текущий синтаксис Swift
Я надеюсь, что это поможет вам
Все приведенные выше ответы отвечают на неправильный вопрос. При использовании Xcode 9 вы используете компилятор Swift 4 (даже если вы используете его для компиляции кода Swift 3), чтобы исправить это, перекомпилируйте с помощью соответствующего компилятора /Xcode.
Если вы пытаетесь сделать это с помощью командной строки, вы можете использовать sudo xcode-select -switch
для переключения между версиями xcode. Удачи!
У меня была одна и та же проблема - (я установил pod, которая была быстрой версией 3x, а моя быстрая версия Swift была 4. Так что у меня появилось так много ошибок компилятора. Позже я изменил версию версии Swift с 4 по 3.2 и попытался создать проект, снова я получил ошибки компилятора. Я думаю, что это произошло из-за того, что я запускал pod install, пока мой проект был в Swift 4.)
Вы сами решаете, когда и хотите ли вы мигрировать для каждой цели, когда это имеет смысл для вашего проекта. Хотя переход на Swift 4.2 определенно приветствуется, это не процесс "все или ничего", поскольку цели Swift 3, 4 и 4.2 могут сосуществовать и соединяться друг с другом.
Вы хотите иметь другую версию cocoapod по сравнению с версией вашего проекта, тогда вы должны внести следующие изменения в конец вашего файла pod:
post_install do |installer|
print "Setting the default SWIFT_VERSION to 4.2\n"
installer.pods_project.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '4.2'
end
installer.pods_project.targets.each do |target|
if ['SomeTarget-iOS', 'SomeTarget-watchOS'].include? "#{target}"
print "Setting #{target} SWIFT_VERSION to 3.0\n"
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '3.0'
end
else
print "Setting #{target} SWIFT_VERSION to Undefined (Xcode will automatically resolve)\n"
target.build_configurations.each do |config|
config.build_settings.delete('SWIFT_VERSION')
end
end
end
end
Иногда даже после запуска pod обновите свой xcode принудительно обновив версию своего проекта cocoapod, затем в этом случае выберите проект cocoapod pod и измените версию swift в настройках сборки.
Xcode 9 нуждается в структуре, которая будет построена с Swift 3.2 или выше. Перейдите в https://github.com/emaloney/CleanroomLogger и нажмите "Загрузить ZIP". Откройте xcodeproj в Xcode 9. Нажмите ⌘B. CleanroomLogger.framework превращается из красного в черный. Перетащите фреймворк в свой проект. См. Соответствующий вопрос: Проблема в области с Swift 3.1