Похоже, Apple необходимо пересмотреть это уведомление о 10-летнем прекращении поддержки Objective C: ^) Меня это укусило на> 1 проекте, и оба они являются бинарными фреймворками сторонних производителей.
Эта ошибка (и аналогичные ошибки, связанные с Swift 4.1, 4.2 и т. Д.) Будут возникать при открытии проекта с Xcode 9.1, 9.2, 9.3, 9.4, 10 и т. Д., Который использует фреймворки, созданные с помощью более ранних инструментов Xcode.
Чтобы решить эту проблему, обновите и перестройте свои фреймворки с помощью Carthage ( carthage update --platform iOS), Cocoapods ( pod updateили pod install) или вручную с помощью новых обновленных инструментов Xcode. Инструменты должны обновляться автоматически при обновлении Xcode, но если нет, вы можете выполнить шаги, описанные ниже в исходном ответе.
Вам также может потребоваться очистить ваш проект cmd + shift + kи, возможно, вашу папку сборки, cmd + option + shift + kчтобы Xcode не использовал кешированные сборки фреймворка.
В некоторых случаях вам также может потребоваться удалить папку с производными данными (легко найти, перейдя в Настройки Xcode -> Местоположения -> Папка с производными данными ( спасибо Stunner )
Для бета-версий Xcode:
См. Исходный ответ ниже, а затем выполните шаги, указанные выше.
Оригинальный ответ:
Вероятно, у вас все еще есть инструменты xcodebuild, настроенные на Xcode 9.0, который создается с помощью Swift 4.0 и несовместим с бета-версией Xcode 9.1 Swift 4.0.1.
Зарегистрируйтесь в терминале с помощью команды:
xcodebuild -version
Или просто зайдите в настройки Xcode -> Locations и проверьте / измените инструменты командной строки на Xcode 9.1. Тогда вы должны быть настроены.
Я также очистил производные данные и очистил проект, не знаю, нужно ли всем, но вот вроде бы. Спасибо
Саймон
3
Привет @Zig. Репо, которое я использую на github (mattdonnelly / swifter), находится в Swift 4.0, но, очевидно, было скомпилировано с использованием XCode 9.0, поэтому у меня возникает эта проблема. Какие шаги необходимы, чтобы перекомпилировать чужой cocoapod на Github для XCode 9.1 и выше?
Мама Джозефа Бойса
1
есть ли способ добавить инструмент командной строки? У меня только Xcode 9.3 в раскрывающемся списке командной строки. и у меня тоже есть эта проблема
Тара Тандель
1
Некоторые из моих стручков не готовы к Swift 4.2, поэтому я должен был возлагать Swift Language Versionна Swift 4тех. Тогда это сработало.
skofgar
1
Плюс 1 за ярлык для очистки папки сборки - я не знал, как это сделать насквозь.
Мэтт
25
Моя проблема была связана с тем, что внешний фреймворк не компилировался для Swift 4.0.2. Я добавил этот файл через Carthage , поэтому запустил:
carthage update --platform iOS
А затем очистка cmd + shift + kпапки проекта и сборки cmd + option + shift + kи удаление папки с производными данными (просто перемещение ее в корзину также работает) для меня.
действительно, это по сути решение. То же самое произошло сегодня (18 апреля) из-за последнего быстрого обновления Apple! :)
Fattie
cmd + option + shift + k - вот что помогло после обновления Carthage. Благодарность!
Леонардо Лейте
15
В моем случае я загрузил бета-версию xCode 11, чтобы протестировать SwiftUI. Когда я запустил свой проект, я получил ошибку «Модуль, скомпилированный с помощью Swift 5.1, не может быть импортирован компилятором Swift 5.0.1: ...» .
Чтобы исправить эту проблему. Я изменил инструмент командной строки xCode на новый инструмент строки комментариев xCode 11. После этого вы можете создать новый проект xcode с помощью SwiftUI.
Установите Xcode Toolchain конкретной версии Xcode, которая работала для вас отсюда .
Набор инструментов Xcode включает в себя копию компилятора, lldb и других связанных инструментов, необходимых для обеспечения согласованного опыта разработки для работы в конкретной версии Swift.
Откройте настройки Xcode, перейдите к «Компоненты»> «Цепочки инструментов» и выберите установленную цепочку инструментов Swift.
Это позволит вам скомпилировать и запустить приложение.
После 2 дней поиска и опробования всех возможных решений с обновлением carthage, начальной загрузкой, настройками быстрого языка и т. Д. Я нашел здесь правильный ответ :)
memresubasi
7
Я столкнулся с этой проблемой с бета-версией Xcode 10, которая добавляет Swift 4.2. Моя проблема не была связана с Карфагеном или какими-либо внешними зависимостями.
Перейдите к YourTarget > Build Settings > Swift Language Versionдля всех ваших целей Xcode.
Мои были все настроены Swift 4.
После добавления этапа сборки копирования файлов я начал получать ошибку
: 0: ошибка: модуль, скомпилированный с помощью Swift 4.1.2, не может быть импортирован компилятором Swift 4.2: /Users/user/Library/Developer/Xcode/DerivedData/MyApp-faskfrihumfcdibjxisjvbfshppp/Build/Intermediates.noindex/MyAppbug/Device MyAppExtension.build/Objects-normal/x86_64/MyClass~partial.swiftmodule
Команда MergeSwiftModule завершилась ошибкой с ненулевым кодом выхода
Затем я каждый целевой объект Swift Language Versionк Swift 4.2, который устранил ошибку.
Я не уверен, почему вообще произошла ошибка, поскольку все установленные цели Swift 4должны быть одинаково действительными.
В моем случае я использовал CocoaPods с плагином cocoapods-binaryдля предварительной сборки библиотек в двоичные файлы. После обновления Xcode с 10 до 11 Xcode выдает мне эту ошибку:
Module compiled with Swift5.0.1 cannot be imported by the Swift5.1 compiler
Исправляю, удалив /Podsкаталог и запустив pod install.
В моем случае я перекомпилировал фреймворк с той версией, на которую он жаловался.
Чтобы перекомпилировать, запустить pod updateили обновить carthage (какой бы вы ни использовали) и построить проект.
Затем найдите фреймворк в Finder. Скопируйте и вставьте в theFramework.frameworkсвой проект и убедитесь, что "Копировать элементы, если необходимо". Создайте проект снова, и он должен работать.
Ответы:
Обновить:
Для выпускных версий Xcode:
Эта ошибка (и аналогичные ошибки, связанные с Swift 4.1, 4.2 и т. Д.) Будут возникать при открытии проекта с Xcode 9.1, 9.2, 9.3, 9.4, 10 и т. Д., Который использует фреймворки, созданные с помощью более ранних инструментов Xcode.
Чтобы решить эту проблему, обновите и перестройте свои фреймворки с помощью Carthage (
carthage update --platform iOS
), Cocoapods (pod update
илиpod install
) или вручную с помощью новых обновленных инструментов Xcode. Инструменты должны обновляться автоматически при обновлении Xcode, но если нет, вы можете выполнить шаги, описанные ниже в исходном ответе.Вам также может потребоваться очистить ваш проект
cmd + shift + k
и, возможно, вашу папку сборки,cmd + option + shift + k
чтобы Xcode не использовал кешированные сборки фреймворка.В некоторых случаях вам также может потребоваться удалить папку с производными данными (легко найти, перейдя в Настройки Xcode -> Местоположения -> Папка с производными данными ( спасибо Stunner )
Для бета-версий Xcode:
См. Исходный ответ ниже, а затем выполните шаги, указанные выше.
Оригинальный ответ:
Вероятно, у вас все еще есть инструменты xcodebuild, настроенные на Xcode 9.0, который создается с помощью Swift 4.0 и несовместим с бета-версией Xcode 9.1 Swift 4.0.1.
Зарегистрируйтесь в терминале с помощью команды:
Или просто зайдите в настройки Xcode -> Locations и проверьте / измените инструменты командной строки на Xcode 9.1. Тогда вы должны быть настроены.
источник
Swift Language Version
наSwift 4
тех. Тогда это сработало.Моя проблема была связана с тем, что внешний фреймворк не компилировался для Swift 4.0.2. Я добавил этот файл через Carthage , поэтому запустил:
А затем очистка
cmd + shift + k
папки проекта и сборкиcmd + option + shift + k
и удаление папки с производными данными (просто перемещение ее в корзину также работает) для меня.источник
В моем случае я загрузил бета-версию xCode 11, чтобы протестировать SwiftUI. Когда я запустил свой проект, я получил ошибку «Модуль, скомпилированный с помощью Swift 5.1, не может быть импортирован компилятором Swift 5.0.1: ...» .
Чтобы исправить эту проблему. Я изменил инструмент командной строки xCode на новый инструмент строки комментариев xCode 11. После этого вы можете создать новый проект xcode с помощью SwiftUI.
Xcode -> Настройки -> Местоположение -> Инструмент командной строки XCode
Надеюсь, это поможет кому-то, кто хочет потестить новый фреймворк :)
источник
Установите Xcode Toolchain конкретной версии Xcode, которая работала для вас отсюда .
Набор инструментов Xcode включает в себя копию компилятора, lldb и других связанных инструментов, необходимых для обеспечения согласованного опыта разработки для работы в конкретной версии Swift.
Откройте настройки Xcode, перейдите к «Компоненты»> «Цепочки инструментов» и выберите установленную цепочку инструментов Swift.
Это позволит вам скомпилировать и запустить приложение.
источник
Я столкнулся с этой проблемой с бета-версией Xcode 10, которая добавляет Swift 4.2. Моя проблема не была связана с Карфагеном или какими-либо внешними зависимостями.
Перейдите к
YourTarget > Build Settings > Swift Language Version
для всех ваших целей Xcode.Мои были все настроены
Swift 4
.После добавления этапа сборки копирования файлов я начал получать ошибку
Затем я каждый целевой объект
Swift Language Version
кSwift 4.2
, который устранил ошибку.Я не уверен, почему вообще произошла ошибка, поскольку все установленные цели
Swift 4
должны быть одинаково действительными.источник
Build Settings
В моем случае (Xcode 9.2):
Я пошел в Xcode
Preferences > Locations > Derived Data
Затем я удалил данные и сделал чистую сборку, и все было в порядке.
источник
В моем случае я использовал CocoaPods с плагином
cocoapods-binary
для предварительной сборки библиотек в двоичные файлы. После обновления Xcode с 10 до 11 Xcode выдает мне эту ошибку:Module compiled with Swift 5.0.1 cannot be imported by the Swift 5.1 compiler
Исправляю, удалив
/Pods
каталог и запустивpod install
.источник
В моем случае я перекомпилировал фреймворк с той версией, на которую он жаловался.
Чтобы перекомпилировать, запустить
pod update
или обновить carthage (какой бы вы ни использовали) и построить проект.Затем найдите фреймворк в Finder. Скопируйте и вставьте в
theFramework.framework
свой проект и убедитесь, что "Копировать элементы, если необходимо". Создайте проект снова, и он должен работать.источник