Подтвердить что ты не робот

Как построить проект Swift 3 на Xcode 9?

Заметки о выпуске Xcode 9 говорит, что поддержка Swift 3 поддерживается:

Один компилятор для Swift 4 и Swift 3, объекты Swift 4 и Swift 3 могут быть скомпилированы вместе в одном проекте.

Я установил бета-версию Xcode 9. Но когда я нажимаю Build, он показывает кучу ошибок. Нужны ли некоторые специальные препараты при использовании Swift 3 в Xcode 9?

UPD: Module compiled with Swift 3.1 cannot be imported in Swift 4.0

Модуль, скомпилированный с Swift 3.1, не может быть импортирован в Swift 4.0

4b9b3361

Ответ 1

Выберите цель, goto Build Settings > Swift Language Version:

введите описание изображения здесь

Ответ 2

Xcode 9 и Xcode 8.3. # обе версии поддерживают Swift 3.2. Если ваш существующий проект имеет язык по умолчанию Swift 3.2, то он будет работать в Xcode 9 с небольшими изменениями. Но если ваш проект поддерживает Swift версии 3.1 или ниже, вы должны перенести его на 3.2 или 4.0, чтобы работать с Xcode 9

Проект ► (Выберите цель проекта) ► Настройки сборки ► (введите "swift" в панели поиска) Язык Swift для компилятора ► Быстрая версия языка ► Нажмите "Список языков", чтобы открыть его.

enter image description here



Преобразуйте исходный код с Swift 3.2 до 4.0. Чтобы упростить перенос кода, выполните следующие действия: (это поможет вам скрыться в последней версии быстрой поддержки, поддерживаемой вашим Xcode Tool)

(Xcode) Меню: Редактировать ► Скрытый ► В текущий синтаксис Swift

enter image description here

Я надеюсь, что это поможет вам

Ответ 3

Все приведенные выше ответы отвечают на неправильный вопрос. При использовании Xcode 9 вы используете компилятор Swift 4 (даже если вы используете его для компиляции кода Swift 3), чтобы исправить это, перекомпилируйте с помощью соответствующего компилятора /Xcode.

Если вы пытаетесь сделать это с помощью командной строки, вы можете использовать sudo xcode-select -switch для переключения между версиями xcode. Удачи!

Ответ 4

У меня была одна и та же проблема - (я установил pod, которая была быстрой версией 3x, а моя быстрая версия Swift была 4. Так что у меня появилось так много ошибок компилятора. Позже я изменил версию версии Swift с 4 по 3.2 и попытался создать проект, снова я получил ошибки компилятора. Я думаю, что это произошло из-за того, что я запускал pod install, пока мой проект был в Swift 4.)

  • Сначала вам нужно изменить "Быстрое языковое исполнение" из настроек сборки.
  • Если вы установили какой-либо модуль, то изменение только "Swift Language Version" не поможет. Возможно, вам потребуется запустить установку pod для проекта.

Ответ 5

Обновление для Xcode 10.1 и Swift 4.2

Цели Swift 3, 4 и 4.2 могут сосуществовать и объединяться.

Вы сами решаете, когда и хотите ли вы мигрировать для каждой цели, когда это имеет смысл для вашего проекта. Хотя переход на Swift 4.2 определенно приветствуется, это не процесс "все или ничего", поскольку цели Swift 3, 4 и 4.2 могут сосуществовать и соединяться друг с другом.

Также могут сосуществовать разные cocoapod и разные версии проекта.

Вы хотите иметь другую версию 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 в настройках сборки.

Ответ 6

Xcode 9 нуждается в структуре, которая будет построена с Swift 3.2 или выше. Перейдите в https://github.com/emaloney/CleanroomLogger и нажмите "Загрузить ZIP". Откройте xcodeproj в Xcode 9. Нажмите ⌘B. CleanroomLogger.framework превращается из красного в черный. Перетащите фреймворк в свой проект. См. Соответствующий вопрос: Проблема в области с Swift 3.1

build it