it-swarm.com.ru

Xcode 9 Swift Language Version (Swift_VERSION)

Я недавно обновил xcode до версии 9. Перед этим в Xcode 8.x всякий раз, когда я использую для выполнения pod update, он показывает мне код обновления, чтобы преобразовать код в Swift 3 и выполнить это, чтобы устранить ошибки. Но теперь это дает мне эту ошибку:

Необходимо установить параметр сборки «Swift Language Version» (Swift_VERSION) к поддерживаемому значению для целей, которые используют Swift. Эта настройка может быть установить в редакторе настроек сборки.

Для этой ошибки я попробовал Build Settings > Swift Language Version и это был Swift 3.2 Но так как вызов обновления переустанавливал некоторые модули, такие как Alamofire, и он говорит об установке Xcode 8.x, чтобы преобразовать код в Swift 3, я тоже Нужно установить дополнительную версию с последней версией Xcode? Если да, то как я могу установить Xcode 8 с Xcode 9? 

81
Chaudhry Talha

Ответ на ваш вопрос:
Вы можете скачать Xcode 8.x с Apple Download Portal или Скачать Xcode 8.3.3 (или посмотреть: Где скачать старую версию Xcode ), если у вас есть премиум-аккаунт разработчика ( Идентификатор Apple ID). Вы можете установить и работать как с Xcode 9, так и с Xcode 8.x в одной (mac) системе. (Убедитесь, что вы Command Line Tools поддерживает обе версии Xcode, для работы с терминалом (см .: Как установить 'Command Line Tool' ))


Подсказка: как перенести ваш код Xcode 9-совместимых версий Swift (Swift 3.2 или 4)
Xcode 9 позволяет преобразование/миграцию только из Swift 3.0 в Swift 3.2/4.0. Поэтому, если текущая версия языка Swift вашего проекта ниже 3.0, вы должны перенести свой код в версию, совместимую с Swift 3, используя Xcode 8.x. 

Это распространенное сообщение об ошибке, которое Xcode 9 показывает, если оно идентифицирует язык Swift ниже 3.0 во время миграции.

enter image description here


Swift 3.2 поддерживается Xcode 9 и Xcode 8 одновременно.

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

enter image description here



Преобразуйте ваш исходный код из Swift 2.0 в 3.2, используя Xcode 8, а затем перейдите к Xcode 9 (Swift 3.2 или 4). 


Чтобы упростить миграцию кода, выполните следующие действия: (это поможет вам перейти на последнюю версию Swift, поддерживаемую вашим инструментом XCode)

Xcode: Меню: Редактировать ▶ Скрывать ▶ К текущему синтаксису Swift

enter image description here

147
Krunal

Для проектов Objective C, созданных с использованием Xcode 8 и теперь открывающихся в Xcode 9, это показывает ту же самую ошибку, как упомянуто в вопросе.

Чтобы это исправить, нажмите кнопку «+» в настройках сборки и выберите «Добавить пользовательскую настройку», как показано на рисунке ниже. 

 build setting

Затем в новой созданной строке добавьте Swift_VERSION в качестве ключа и 3.2 в качестве значения, как показано ниже. 

 enter image description here

Это исправит ошибку для проектов Objective C.

46
R. Mohan

Это может произойти, когда вы добавили базовые данные в существующий проект.
Проверить:
<Имя>/<имя> .xcdatamodeld/<Имя> .xcdatamodel/содержимое
файл.
Этот файл содержит запись «sourceLanguage», которая (по умолчанию) могла быть установлена ​​в «Swift». Измените его на «Objective-C».

1
digitaldaemon

Я просто нажимаю на последнюю кнопку конвертации в Swift и устанавливаю настройки сборки целевого приложения -> языковая версия Swift: Swift 4.0,

Надеюсь, это поможет.

0
Atal Singh

Это решение работает, когда ничего не работает:

Я потратил больше недели, чтобы преобразовать весь проект и пришел к решению ниже:

Во-первых, деинтегрируйте зависимость cocopods от проекта, а затем начните преобразование проекта в последнюю версию Swift.

Перейдите в каталог проектов в терминале и введите:

pod deintegrate

Это приведет к деинтеграции кокопод из проекта, и в проекте не останется никаких следов CocoaPods. Но в то же время он не удалит xcworkspace и подфайлы. Это нормально, если они присутствуют.

Теперь вам нужно открыть xcodeproj (не xcworkspace), и вы получите много ошибок, потому что вы вызвали методы зависимости cocoapods в ваших основных проектах.

Таким образом, чтобы удалить эти ошибки, у вас есть два варианта:

  1. Прокомментируйте весь код, который вы использовали из библиотеки cocoapods.
  2. Создайте класс-обертку, который имеет фиктивные методы, подобные библиотеке cocopods, и затем вызовите его.

Как только все ошибки будут удалены, вы можете преобразовать код в последнюю версию Swift.

Иногда, если вы получаете странные ошибки, попробуйте очистить производные данные и попробуйте снова.

0
HSAM

Я только что получил это в проекте Xcode 10 (New) Objective-C после того, как я добавил файл модели Core Data в проект.

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

  1. Откройте инспектор файлов модели (⌥⌘-1) и измените язык с Swift на Objective-C

  2. Более длинный и опасный метод

Модель содержит файл содержимого с этой строкой:

<model type="com.Apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="14460.32" systemVersion="17G5019" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">

Там есть sourceLanguage="Swift" запись. Измените его на sourceLanguage="Objective-C", и ошибка исчезнет.

Чтобы найти файл «содержимого», щелкните правой кнопкой мыши на .xcdatamodeld в Xcode и выполните «Показать в Finder». Щелкните правой кнопкой мыши на фактическом (Finder) файле и выполните «Показать содержимое пакета».

Также: изменение языка модели остановит Xcode от генерации файлов подклассов управляемых объектов в Swift.

0
nevan king