Модуль, скомпилированный с Swift 4.0, не может быть импортирован в Swift 4.0.1

Однако я перекомпилировал фреймворк, используя тот же Xcode, и он все еще дает мне эту ошибку.

  • Базовый SDK iOS 11.1 для обоих
  • Swift Language Version Swift 4.0 для обоих
  • Не использовать Pods/Carthage

Я надеюсь, что кто-то может знать

Ответы

Ответ 1

Обновить:

Для версий выпуска 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 или 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 beta Swift 4.0.1.

Проверьте в терминале, используя команду:

xcodebuild -version

Или просто зайдите в настройки Xcode → Locations и проверьте/измените инструменты командной строки на Xcode 9.1. Вы должны быть установлены тогда.

Ответ 2

Моя проблема была связана с тем, что внешняя структура не была скомпилирована для Swift 4.0.2. Я добавил этот файл через Карфаген, поэтому запустил:

carthage update --platform iOS

А затем очистка проекта cmd + shift + k и сборка папки cmd + option + shift + k и удаление папки с производными данными (также просто перемещение ее в мусорную корзину) помогли мне.

Ответ 3

Установите XCode Toolchain определенной версии XCode, которая работала для вас отсюда.

Набор инструментов Xcode включает в себя копию компилятора, lldb и других связанных инструментов, необходимых для обеспечения целостного опыта разработки для работы в определенной версии Swift.

Откройте "Настройки XCode", перейдите к "Компоненты"> "Наборы инструментов" и выберите установленный набор инструментов Swift.

Это позволит вам скомпилировать и запустить приложение на данный момент.

Ответ 4

В моем случае я скачал бета-версию xCode 11 для тестирования SwiftUI. Когда я запускаю свой проект, я получаю "Модуль, скомпилированный с помощью Swift 5.1, не может быть импортирован компилятором Swift 5.0.1:...".

Чтобы решить эту проблему. я изменил инструмент командной строки xCode на новый инструмент строки комментариев xCode 11. После этого вы можете создать новый проект xcode с SwiftUI.

Xcode → Настройки → Местоположение → Инструмент командной строки XCode

Xcode Commend Line Tool

Надеюсь, это поможет кому-то, кто захочет протестировать с новым freamework :)

Ответ 5

Я решил эту проблему с бета-версией 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/MyAppbu MyAppExtension.build/Objects-normal/x86_64/MyClass~partial.swiftmodule

Сбой команды MergeSwiftModule с ненулевым кодом выхода

Затем я установил для каждой целевой Swift Language Version Swift 4.2, что устранило ошибку.

Я не уверен, почему ошибка произошла, во-первых, поскольку все цели, установленные в Swift 4 должны быть одинаково действительны.

Ответ 6

В моем случае (Xcode 9.2):

Я пошел в Preferences > Locations > Derived Data XCode Preferences > Locations > Derived Data

Затем я удалил данные, сделал чистую сборку и все было в порядке.

Ответ 7

В моем случае я использовал 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.