Я недавно обновил 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?
Ответы:
Ответ на ваш вопрос:
вы можете загрузить Xcode 8.x с портала загрузок Apple или загрузить Xcode 8.3.3 (или см. « Где скачать старую версию Xcode» ), если у вас есть учетная запись разработчика премиум-класса (идентификатор Apple). Вы можете установить и работать как с 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 во время миграции.
Swift 3.2 поддерживается как Xcode 9, так и Xcode 8.
Преобразуйте исходный код из Swift 2.0 в 3.2 с помощью Xcode 8, а затем продолжите с Xcode 9 (Swift 3.2 или 4).
Чтобы упростить перенос кода, выполните следующие действия: (это поможет вам преобразовать в последнюю версию swift, поддерживаемую вашим Xcode Tool)
источник
Для проектов Objective C, созданных с использованием Xcode 8 и теперь открывающихся в Xcode 9, отображается та же ошибка, что и в вопросе.
Чтобы исправить это, нажмите кнопку + в настройках сборки и выберите «Добавить пользовательскую настройку», как показано на изображении ниже.
Затем в созданной новой строке добавьте
SWIFT_VERSION
как ключ и3.2
как значение, как показано ниже.Это исправит ошибку для проектов с целью c.
источник
Я получил это только после создания нового проекта Objective-C в Xcode 10, после того, как добавил в проект файл модели Core Data.
Я нашел два способа исправить это:
Модель содержит файл "содержимого" со строкой:
Там есть
sourceLanguage="Swift"
запись. Измените его на,sourceLanguage="Objective-C"
и ошибка исчезнет.Чтобы найти файл «содержимого», щелкните правой кнопкой мыши
.xcdatamodeld
в Xcode и выберите «Показать в Finder». Щелкните правой кнопкой мыши фактический файл (Finder) и выберите "Показать содержимое пакета".Также: изменение языка модели остановит Xcode от создания файлов подкласса управляемых объектов в Swift.
источник
Это может произойти, если вы добавили Core Data в существующий проект.
Проверьте файл :
<Name> / <Name> .xcdatamodeld / <Name> .xcdatamodel / contents
.
Этот файл содержит запись «sourceLanguage», которая (по умолчанию) могла иметь значение «Swift». Измените его на «Objective-C».
источник
Я просто нажимаю последнюю кнопку быстрого преобразования и устанавливаю настройку целевой сборки приложения-> языковая версия Swift: swift 4.0,
Надеюсь, это поможет.
источник
Это решение работает, когда ничего не работает:
Я потратил больше недели на преобразование всего проекта и пришел к следующему решению:
Сначала деинтегрируйте зависимость cocopods от проекта, а затем начните преобразование проекта в последнюю версию Swift.
Перейдите в каталог проекта в терминале и введите:
Это приведет к деинтеграции кокоподов из проекта, и в проекте не останется никаких следов CocoaPods. Но в то же время он не удалит xcworkspace и подфайлы. Ничего страшного, если они присутствуют.
Теперь вам нужно открыть xcodeproj (не xcworkspace), и вы получите много ошибок, потому что вы вызвали методы зависимостей cocoapods в своих основных проектах.
Итак, чтобы удалить эти ошибки, у вас есть два варианта:
Как только все ошибки будут удалены, вы можете преобразовать код в последнюю версию Swift.
Иногда, если вы получаете странные ошибки, попробуйте очистить производные данные и повторите попытку.
источник
возможно, вам нужно скачать набор инструментов. Эта ошибка возникает, когда у вас нет нужной версии компилятора Swift.
источник
В моем случае все предупреждения исчезли после того, как я напрямую изменил версию 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
источник