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.