Подтвердить что ты не робот

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?

4b9b3361

Ответ 1

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


Подсказка: как перенести ваш код 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 Tool)

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

enter image description here

Ответ 2

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

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

build setting

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

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

Он исправит ошибку для объектных проектов c.

Ответ 3

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

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

  1. Простой способ: открыть инспектор файлов модели базовых данных ( - 1) и изменить язык с Swift на Objective-C

Change Core Data model language

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

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

<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 в .xcdatamodeld и выполните "Показать в Finder". Щелкните правой кнопкой мыши на фактическом (Finder) файле и выполните "Показать содержимое пакета".

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

Ответ 4

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

Ответ 5

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

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

Ответ 7

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

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

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

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

pod deintegrate

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

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

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

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

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

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

Ответ 8

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

Ответ 9

В моем случае все предупреждения исчезли после того, как я непосредственно изменил версию swift с 2.x на 4.0 в настройках сборки, кроме двух предупреждений.

Эти предупреждения относятся к папке myprojectnameTests и myprojectnameUITests. Я не заметил, и я подумал, что это связано с прямой иммиграцией из Xcode 7 в Xcode 9, и я подумал, что не могу решить эту проблему, и я должен установить пропущенную версию Xcode 8.

В моем случае я удалил эти папки, и все предупреждения исчезли, но вы можете воссоздать эту папку и содержать с помощью этого:

file > new > target > (uitest or unittest extensions)

и используйте эту статью для создания тестовых случаев: https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/04-writing_tests.html