Однако я перекомпилировал фреймворк, используя тот же Xcode, и он все еще дает мне эту ошибку.
- Базовый SDK iOS 11.1 для обоих
- Swift Language Version Swift 4.0 для обоих
- Не используется Pods / Carthage
Я надеюсь, что кто-нибудь может знать
Однако я перекомпилировал фреймворк, используя тот же Xcode, и он все еще дает мне эту ошибку.
Я надеюсь, что кто-нибудь может знать
Ответы:
Обновить:
Для выпускных версий 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.
Зарегистрируйтесь в терминале с помощью команды:
xcodebuild -version
Или просто зайдите в настройки Xcode -> Locations и проверьте / измените инструменты командной строки на Xcode 9.1. Тогда вы должны быть настроены.
Swift Language Version
на Swift 4
тех. Тогда это сработало.
Моя проблема была связана с тем, что внешний фреймворк не компилировался для Swift 4.0.2. Я добавил этот файл через Carthage , поэтому запустил:
carthage update --platform iOS
А затем очистка 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
.
После добавления этапа сборки копирования файлов я начал получать ошибку
: 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
должны быть одинаково действительными.
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
свой проект и убедитесь, что "Копировать элементы, если необходимо". Создайте проект снова, и он должен работать.