У меня есть проект Objective-C в Xcode 8 Beta 3. После обновления при каждой попытке сборки я получаю следующую ошибку:
«Использовать устаревшую версию языка Swift» (SWIFT_VERSION) необходимо правильно настроить для целей, использующих Swift. Используйте меню [Правка> Преобразовать> В текущий синтаксис Swift ...], чтобы выбрать версию Swift, или используйте редактор Build Settings, чтобы напрямую настроить параметры сборки.
Кто-нибудь сталкивался с этим? Поскольку это проект Objective-C, здесь нет параметров сборки для настройки Swift. Я также удостоверился, что ни одна из зависимостей проекта или CocoaPods не использует Swift. Единственное решение, которое у меня есть, - это использование бета-версии 2. Есть идеи, как решить эту проблему?
Я должен также упомянуть, что я использую OSX 10.12 Beta 2.
источник
Ответы:
Если вы используете CocoaPods и хотите, чтобы он автоматически исправлялся каждый раз, когда вы делаете a
pod install
, то вы можете добавить эти строки в конец вашего Podfile:РЕДАКТИРОВАТЬ: эта проблема теперь исправлена, если вы используете CocoaPods v1.1.1 или более поздней версии. Не забудьте удалить
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
настройку из основных целей проекта.источник
2.3
вместо3.0
отличного решения! Это эффективно делает"Use Legacy Swift Language Version"
дляNo
(или если вы измените его на2.3
этоYes
). Преимущество этой опции заключается в том, что каждый раз, когда выpod install
устанавливаете эту настройку автоматически! Потрясающие. Я вижу, что онSWIFT_VERSION
настроен и на проекты Obj-C . Я предполагаю, что нет никаких неблагоприятных воздействий?pod install / update
. Это решение делает вещи быстрее. Вы также можете обновить версию Cocoapods сейчас: она также должна решить эту проблему.Я просто нашел способ это исправить.
Перейдите в настройки сборки проекта или библиотеки и установите для атрибута Версия компилятора Swift «Использовать устаревшую версию языка Swift» значение от Не указано до Да или Нет.
источник
pod install
я рекомендую использовать ответ @Tulleb выше.Я уже некоторое время игнорирую эту проблему, а пока просто работаю над другими вещами - наконец-то я нашел решение своей проблемы.
Так как мой проект Objective-C, я подумал, что, возможно, один из используемых мной Стручков использует Swift, я проверил каждый из них, но ни один из них не был.
Окончательное решение состояло в том, что моя базовая модель данных была настроена на генерацию кода в Swift, хотя я вручную генерировал их в меню «Файл»> «Создать»> «NSManagedObjectSubclass». Все, что мне нужно было сделать, это переключить его на Objective-C.
источник
Эта проблема также видна в Xcode-8.1. Когда мы добавляем новую цель, такую как Extension или Widget, сторонняя библиотека интегрируется в новую цель с помощью кокоподов. После установки Pod . Мы можем столкнуться с той же ошибкой, что и выше.
Измените версию Legacy Swift Language в каждой настройке сборки библиотеки на
источник
Если вы используете Xcode 8 или новее
источник
Добавьте приведенный ниже код в конец подфайла.
источник
Я работаю над проектом, в котором смешаны код target-c и swift. Ранее я использовал swift версии 2.3, а после обновления до swift 3 мне не удалось собрать проект. Xcode пожаловался с упомянутым сообщением об ошибке.
По-видимому, в моем файле project.pbxproj была указана устаревшая версия Swift. Там было указано быстрое 3.0.1:
Принимая во внимание, что я уже установил 3.0.2:
Ооо, я исправил это, изменив версию Swift в файле project-pbxproj на:
Кажется, спецификатор версии уровня патча был слишком конкретным.
источник
В моем случае я просто делаю следующее
Выберите проект Target => Перейти к настройке сборки => Искать «Swift Language Version» => присвоить значение текущей версии Swift
Это все, что это исправило мою проблему
источник
Я получил ту же ошибку. Я пытался найти "Использовать версию Legacy Swift Language", но не нашел. Я использую XCode 8.3.3 После слишком большого количества серфинга и работы вокруг я нашел это решение, и это сработало для меня.
источник
установите «Использовать версию Legacy Swift Language» на «ДА», если вы используете старую версию swift в своем проекте или любую стороннюю версию swift. «Нет», если ваш проект обновлен до текущей быстрой версии. если вы не конфигурируете свою версию swift, после каждого обновления и установки, Pod Framework должен указать это.
источник
На самом деле мне пришлось искать «Legacy Swift», чтобы изменить его с неопределенного на «Да». Когда я просто прокрутил страницу, описанную выше, я не смог ее изменить. Надеюсь, это кому-нибудь поможет.
источник
Мой проект написан на Swift. Я получил ту же ошибку с
fastlane
. Произошло автоматическое обновление моего Xcode, поэтому мне пришлось обновить свой проект до Swift 3.0. Есть куча ошибок. Исправление и отладка занимали слишком много времени, и в тот момент это не стоило того, поэтому я решил установить более старую версию Xcode. Вернул мой код до 2.3. Тогдаfastlane beta
больше не работал. Оказывается, мне нужно было установить инструмент командной строки на 7.3.источник
У меня была такая же проблема, и я решил ее следующим образом:
В Project> Настройки сборки:
Always Embed Swift Standard Libraries = $(inherited)
Use Legacy Swift Language Version = YES
Тогда в моем подфиле:
config.build_settings['SWIFT_VERSION'] = '3.0'
Использование этих трех настроек удалило все предупреждения и позволило мне правильно скомпилировать.
Самым непонятным и на самом деле прогрессом в компиляции было изменение SWIFT_VERSION в Podfile с 3 на 3.0, как предлагается здесь .
источник
Начиная с XCode 8, вы можете использовать swift 2.3, даже если XCode 8 использует swift 3.x в качестве версии swift по умолчанию. Чтобы использовать swift 2.3, просто установите флажок «Использовать Legacy Swift Language Version» для «YES» из «Build Setting», тогда XCode будет использовать Swift 2.3 для этой цели проекта.
источник
Прежде чем пробовать сложные решения, вот базовая проверка, которую вы должны сделать, если вы новичок в Cocoapods и у вас возникла эта проблема.
Вам может понадобиться:
platform :ios, '10.1' # Put the right version and no #platform here use_frameworks! # For swift pod "MyPod" # Your mean pod :)
pod install
снова запуститеМожет быть, это просто так.
Если нет, вы можете пойти выше ;-)
источник
У меня была такая же проблема после обновления до xcode 8.3.2, но опция «Использовать устаревший язык Swift» пропала. Это, кажется, вариант изменить сейчас:
Использовал это исправление с Alamofire и другими библиотеками, и все работает нормально.
источник
Перейдите к настройке сборки проекта для проекта и выберите цель ниже двух.
Изменить на последний
Swift 3
.Ошибка устранена.
Если это исправило вашу ошибку, пожалуйста, нравится.
источник
В Xcode 9 beta. Перейдите в Настройки проекта, Настройки сборки, найдите версию Swift Language. В Xcode 9 вы должны указать, используете ли вы Swift 3.2 или Swift 4.
источник
Если вы
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
по-NO
прежнему не работаете, это потому, что проблема с Xcode, а не ваша проблема. Делаем следующие шаги:1.Измените
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
свойство, чтобы оно былоYES
на цели предупреждения.2. затем на левой панели появится предупреждение, которое рекомендует вам перейти на swift 3.0
3. затем изменить обратно
NO
. Перестройте проект, xcode наконец обнаружит ваше изменениеNO
!Проблема решена в этом случае!
источник