it-roy-ru.com

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

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

  • Базовый SDK iOS 11.1 для обоих
  • Версия Swift Language Swift 4.0 для обоих
  • Не используя стручки/карфаген

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

66
Simon

Update:

Для версий выпуска 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" -> "Местоположения" -> "Папка производных данных" ( Thanks Stunner ).

Для бета-версий Xcode:

Смотрите оригинальный ответ ниже, а затем следуйте инструкциям выше.

Оригинальный ответ:

Вероятно, у вас все еще есть инструменты xcodebuild, настроенные на Xcode 9.0, который собирается с Swift 4.0 и несовместим с бета-версией Xcode 9.1 Swift 4.0.1.

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

xcodebuild -version

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

113
Zig

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

carthage update --platform iOS

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

20
Stunner

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

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

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

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

8
Tina

Я столкнулся с этой проблемой с бета-версией Xcode 10, которая добавляет Swift 4.2. Моя проблема не была связана с Карфагеном или каких-либо внешних зависимостей.

Перейдите к YourTarget > Build Settings > Swift Language Version для всех ваших целей Xcode.

Все мои были установлены на Swift 4.

После добавления фазы сборки файлов копирования я начал получать сообщение об ошибке

: 0: ошибка: модуль, скомпилированный с помощью Swift 4.1.2, не может быть импортирован компилятором Swift 4.2:/Пользователи/пользователь/Библиотека/Разработчик/Xcode/DerivedData/MyApp-faskfrihumfcdibjxisjvbfshppp/Build/Intermediates.noindex/MyApp.build/Debug/MyAppExtension.build/Объекты-нормальный/x86_64/MyClass ~ partial.swiftmodule

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

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

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

7
pkamb

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

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

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

3
user3288482