Xcode 8 Beta 3 Use Legacy Swift выдает

swift xcode8 xcode8-beta3

97504 просмотра

19 ответа

1924 Репутация автора

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

«Использовать устаревшую версию языка Swift» (SWIFT_VERSION) необходимо правильно настроить для целей, использующих Swift. Используйте меню [Правка> Преобразовать> В текущий синтаксис Swift ...], чтобы выбрать версию Swift, или используйте редактор параметров сборки, чтобы напрямую настроить параметры сборки.

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

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

Автор: Bryan Источник Размещён: 18.07.2016 09:14

Ответы (19)


118 плюса

5470 Репутация автора

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

Перейдите в настройки сборки проекта или библиотеки и установите для атрибута Версия компилятора Swift «Использовать устаревшую версию языка Swift» значение от Не указано до Да или Нет.

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

Автор: rockdaswift Размещён: 19.07.2016 08:51

364 плюса

5720 Репутация автора

Если вы используете CocoaPods и хотите, чтобы он автоматически исправлялся каждый раз, когда вы делаете a pod install, то вы можете добавить эти строки в конец вашего 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

РЕДАКТИРОВАТЬ: эта проблема теперь исправлена, если вы используете CocoaPods v1.1.1 или более поздней версии. Не забудьте удалить ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIESнастройку из основных целей проекта.

Автор: Tulleb Размещён: 19.07.2016 07:12

33 плюса

1924 Репутация автора

Решение

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

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

Окончательное решение состояло в том, что моя базовая модель данных была настроена на генерацию кода в Swift, хотя я вручную генерировал их в меню «Файл»> «Создать»> «NSManagedObjectSubclass». Все, что мне нужно было сделать, это переключить его на Objective-C.

Скриншот

Автор: Bryan Размещён: 26.07.2016 06:48

3 плюса

693 Репутация автора

установите «Использовать версию Legacy Swift Language» на «ДА», если вы используете старую версию swift в своем проекте или любую стороннюю версию swift. «Нет», если ваш проект обновлен до текущей быстрой версии. если вы не конфигурируете свою версию swift, после каждого обновления и установки, Pod Framework должен указать это.

Автор: Mohammad Arifuzzaman Размещён: 22.09.2016 07:50

5 плюса

327 Репутация автора

Добавьте код ниже в конец подфайла.

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
Автор: Sunil aruru Размещён: 07.10.2016 04:56

2 плюса

202 Репутация автора

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

Автор: Mountain Man Размещён: 11.10.2016 09:46

18 плюса

4547 Репутация автора

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

Измените версию Legacy Swift Language в каждой настройке сборки библиотеки на

Нет .

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

Автор: Shrawan Размещён: 08.11.2016 09:00

2 плюса

1650 Репутация автора

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

Автор: yoninja Размещён: 10.11.2016 04:05

4 плюса

10239 Репутация автора

Я работаю над проектом, в котором смешаны код target-c и swift. Ранее я использовал swift версии 2.3, а после обновления до swift 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

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

SWIFT_VERSION = 3.0;

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

Автор: leviathan Размещён: 16.12.2016 10:12

1 плюс

588 Репутация автора

Если вы ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIESпо- NOпрежнему не работаете, это потому, что проблема с Xcode, а не ваша проблема. Делаем следующие шаги:

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

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

3. затем вернитесь к NO. Перестройте проект, xcode наконец обнаружит ваше изменение NO!

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

Автор: Wangdu Lin Размещён: 24.01.2017 05:13

1 плюс

56 Репутация автора

У меня возникла та же проблема, и я решил ее следующим образом:

В 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, как предлагается здесь .

Автор: Hector Partidas Размещён: 30.01.2017 04:19

1 плюс

2990 Репутация автора

Начиная с 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 для цели проекта.

Автор: arunjos007 Размещён: 01.02.2017 11:27

9 плюса

488 Репутация автора

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

  1. Перейти в настройки сборки
  2. Найти использовать устаревшую версию языка Swift
  3. Да - Swift 2.3
  4. Нет - Swift 3.0 введите описание изображения здесь
Автор: Mohammad Kamran Usmani Размещён: 04.02.2017 10:11

1 плюс

106 Репутация автора

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

Вам может понадобиться:

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

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

  • Сохраните ваш Podfile, закройте Xcode и pod installснова запустите
  • Откройте свой проект. Xcworkspace

Может быть, это просто так.

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

Автор: Diphaze Размещён: 02.03.2017 12:38

1 плюс

1028 Репутация автора

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

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

Автор: Jorge Irún Размещён: 24.04.2017 01:48

1 плюс

2167 Репутация автора

Перейдите в раздел «Настройка сборки проекта» для проекта и «Цель» ниже двух.

ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
And
Swift Compiler - Version  = Swift 3

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

Ошибка устранена.

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

Автор: kiran Размещён: 25.04.2017 06:59

1 плюс

174 Репутация автора

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

Автор: Niall Kehoe Размещён: 06.06.2017 03:58

4 плюса

203 Репутация автора

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

Выберите проект Target => Перейти к настройке сборки => Искать «Swift Language Version» => присвоить значение текущей версии Swift

Это все, что это исправило мою проблему

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

Автор: khusboo suhasini Размещён: 14.08.2017 11:59

4 плюса

1389 Репутация автора

Я получил ту же ошибку. Я пытался найти "Использовать версию Legacy Swift Language", но не нашел. Я использую 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.)
Автор: Aklesh Rathaur Размещён: 24.10.2017 07:23
Вопросы из категории :
32x32