Xcode 8 Beta 3 Используйте устаревшую версию Swift

У меня есть проект Objective-C в Xcode 8 Beta 3. Начиная с обновления, всякий раз, когда я пытаюсь построить, я получаю следующую ошибку:

"Использовать устаревшую версию языка Swift" (SWIFT_VERSION) необходимо правильно настроить для целей, которые используют Swift. Используйте меню [Edit > Convert > To Current Swift Syntax...] для выбора версии Swift или используйте редактор настроек Build, чтобы напрямую настроить параметры сборки.

Кто-нибудь сталкивался с этим? Поскольку в проекте Objective-C нет настройки сборки для настройки Swift. Я также убедился, что ни одна из зависимостей проекта или CocoaPods не использует Swift. Единственное решение, которое у меня есть, это использовать бета-версию 2. Любые идеи, как я могу исправить эту проблему?

Я также должен упомянуть, что я запускаю OSX 10.12 Beta 2.

Ответ 1

Я уже некоторое время игнорирую эту проблему и просто работаю над другими вещами, тем временем я нашел решение своей проблемы.

Поскольку мой проект Objective-C, я подумал, что, возможно, один из Pods, который я использую, использовал Swift, я проверил каждый Pod, и никто из них не был.

Окончательное решение заключалось в том, что моя модель Core Data была настроена на создание кода в Swift, хотя я вручную их создавал в меню File > New > NSManagedObjectSubclass. Все, что мне нужно было сделать, это переключить его на Objective-C.

screenshot

Ответ 2

Если вы используете CocoaPods и хотите, чтобы он был автоматически исправлен каждый раз, когда вы выполняете pod install, вы можете добавить эти строки в конец вашего подфайла:

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['SWIFT_VERSION'] = '3.0'
        end
    end
end

EDIT: эта проблема теперь исправлена, если вы используете CocoaPods v1.1.1 или новее. Не забудьте удалить параметр ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES из основных целей проекта.

Ответ 3

Я только нашел способ исправить это.

Перейдите к настройкам сборки проекта или библиотеки и установите атрибут Swift Compiler Version "Использовать устаревшую версию языка Swift" из Unspecified в Yes или NO.

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

Ответ 4

Эта проблема также видна в Xcode-8.1. Когда мы добавляем новый Target, например Extension или Widget, а сторонняя библиотека интегрируется в новую цель с помощью cocopods. После Подстроить. Мы можем столкнуться с такой же ошибкой, как указано выше.

Измените Использовать устаревшую версию языка Swift в каждой настройке сборки библиотеки на

Нет.

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

Ответ 5

Если вы используете Xcode 8 или более позднюю версию

  • Перейдите к настройкам сборки
  • Найти прежнюю быструю языковую версию
  • Да - Swift 2.3
  • Нет - Swift 3.0 введите описание изображения здесь

Ответ 6

Добавьте ниже код в конец podfile.

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['SWIFT_VERSION'] = '3.0'
    end
  end
end

Ответ 7

Я работаю над проектом с смешанным objective-c и быстрым кодом Я ранее использовал быструю версию 2.3 и после обновления до быстрого 3 я не смог построить проект. Xcode пожаловался на указанное сообщение об ошибке.

По-видимому, в моем файле project.pbxproj была еще устаревшая версия Swift. Был указан быстрый 3.0.1:

SWIFT_VERSION = 3.0.1;

В то время как у меня уже был установлен 3.0.2:

$ xcrun swift -version
Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1)
Target: x86_64-apple-macosx10.9

Sooo, я исправил его, изменив версию Swift в файле project-pbxproj на:

SWIFT_VERSION = 3.0;

Кажется, спецификатор версии уровня патча был слишком специфичным.

Ответ 8

В моем случае я просто делаю следующие вещи

Выберите проект Target = > Перейти к настройке сборки = > Искать "Быстрая версия языка" = > дать значение текущей версии Swift

Thats all Он исправил мой вопрос

Следуйте этому изображению

Ответ 9

Я получил ту же ошибку. Я попытался найти "Использовать устаревшую версию языка Swift", но не найден. Я использую Xcode 8.3.3 После серфинга слишком много и работая, я нашел это решение, и это сработало для меня. введите описание изображения здесь

Here are the steps.
1=> select your target from Xcode
2=> go to build setting
3=> search for "Swift Language Version"
4=> change it to swift 3. (or accordingly.)

Ответ 10

установите "Использовать устаревшую версию языка Swift" на "YES", если вы используете старую версию swift в своем проекте или любую быструю стороннюю сторону. "Нет", если ваш проект переместится в текущую быструю версию. если вы не настроите свою быструю версию, после каждого обновления и установки под Framework Pod необходимо указать это.

Ответ 11

Мне действительно нужно было выполнить поиск "Legacy Swift", чтобы изменить его с неопределенного на "Да". Когда я просто прокручивался до раздела, описанного выше, я не смог его изменить. Надеюсь, это поможет кому-то.

Ответ 12

Мой проект написан в Swift. Я получил ту же ошибку с fastlane. То, что произошло, было моим обновленным Xcode, поэтому мне пришлось обновить свой проект до Swift 3.0. Получил массу ошибок. Фиксация и отладка занимала слишком много времени, и в тот момент это не стоило того, поэтому я решил установить более старую версию Xcode. Вернул мой код в 2.3. Тогда fastlane beta больше не работал. Оказывается, мне нужно было установить Command Line Tool на 7.3. введите описание изображения здесь

Ответ 13

Если изменить ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES к NO все еще не работает, это потому, что вопрос Xcode, не ваша проблема. Выполнение следующих шагов:

1.Измените свойство ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES как YES для целевой цели предупреждения

2. затем он покажет предупреждение на левой панели, которое рекомендует вам перейти на swift 3.0

3. Затем измените значение NO. Перестройте проект, xcode, наконец, определит ваше изменение NO !

Проблема решена в этом случае!

Ответ 14

У меня была эта же проблема и я решил ее сделать, выполнив следующие действия:

В проекте > Настройки сборки:

Always Embed Swift Standard Libraries = $(inherited) Use Legacy Swift Language Version = YES

Затем в моем подфайле:

config.build_settings['SWIFT_VERSION'] = '3.0'

Использование этих трех настроек удалило все предупреждения и позволило мне правильно скомпилировать.

Самое неясное и то, что на самом деле получило прогресс для компиляции, заключалось в изменении SWIFT_VERSION в подфайле от 3 до 3.0, как предложено здесь.

Ответ 15

Начиная с XCode 8, вы можете использовать swift 2.3, хотя XCode 8 использует swift 3.x в качестве быстрой версии по умолчанию. Чтобы использовать swift 2.3, просто включите флаг Использовать устаревшую версию языка Swift с YES из настройки Build, тогда XCode будет использовать Swift 2.3 для этой цели проекта.

Ответ 16

Прежде чем приступать к сложным решениям, выполните базовую проверку, если вы новичок в Cocoapods, и у вас возникла эта проблема.

Вам может потребоваться:

  • Откройте свой подфайл еще
  • Убедитесь, что строка для платформы не закомментирована символом '#'. Наконец-то это должно выглядеть примерно так:

platform :ios, '10.1' # Put the right version and no #platform here use_frameworks! # For swift pod "MyPod" # Your mean pod :)

  • Сохраните свой подфайл, закройте Xcode и запустите pod install снова
  • Откройте проект project.xcworkspace

Возможно, это именно так.

Если нет, вы можете пойти выше; -)

Ответ 17

У меня была такая же проблема после обновления до xcode 8.3.2, но опция "Использовать устаревший язык Swift" исчезла. Кажется, теперь это вариант изменения: версия Swift Lang

Используется это исправление с Alamofire и другими libs, и все работает нормально.

Ответ 18

Перейдите к настройке сборки проекта для проекта и цели ниже двух.

ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
And
Swift Compiler - Version  = Swift 3

Изменить на последний Swift 3.

Ошибка решена.

Если исправлено исправление ошибки, пожалуйста, понравится.

Ответ 19

В Xcode 9 beta. Перейдите в раздел "Настройки проекта", "Настройки сборки", "Поиск версии Swift Language". В Xcode 9 вы должны указать, используете ли вы Swift 3.2 или Swift 4.