Модуль, скомпилированный с помощью swift 3.0, не может быть импортирован в Swift 3.0.1

Я обновил Xcode до 8.1 GM и теперь получаю ошибку ниже для SwiftyJSON. Кажется, что работают другие импортированные структуры. Есть ли способ заставить это работать в Swift 3 до тех пор, пока SwiftyJSON не улучшит свою структуру? Я использовал Carthage для импорта/обновления фреймворков. Я также попытался изменить Use Legacy Swift language version Вкл. И Выкл. Безрезультатно.

Модуль, скомпилированный с Swift 3.0, не может быть импортирован в Swift 3.0.1: Модули /SwiftyJSON.swiftmodule/arm64.swiftmodule

Ответ 1

SwiftyJson загружается, предварительно скомпилированный carthage. Предварительно скомпилированная загрузка с Swift Version 3.0. Это заставляет компилятор жаловаться, что версия неверна. Используя следующую команду:

carthage update --platform iOS --no-use-binaries

SwiftyJson (и все остальные фреймворки в Карфагене) будут скомпилированы локально, используя локальную версию Swift (3.0.1), и компилятор больше не будет жаловаться.

Ответ 2

Удалите приложение chache из DerivedData и перестройте. ошибка может быть исправлена.

Путь DerivedData выглядит следующим образом:

~/Library/Developer/Xcode/DerivedData/

Ответ 3

Убедитесь, что вы разместили новый пакет XCode 8.1 GM в папке "Приложения". Мы столкнулись с этой проблемой, когда один из нас запускал Carthage для обновления наших зависимостей, но не заменил приложение XCode old 8.0 в папке приложений (8.1 GM сбежал с рабочего стола).

Вы хотите убедиться, что при запуске в терминале: xcrun swift -version, который возвращает Apple Swift version 3.0.1.

Ответ 4

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

Шаг 1: Используйте следующую команду для обновления версии Xcode до последней версии на терминале. Ссылка

sudo xcode-select -switch <path/to/>Xcode.app

Шаг 2: Теперь попробуйте выполнить команду обновления Carthage

carthage update --platform iOS

Ответ 5

Только для получения последних обновлений:

Carthage выпустил версия 0.20 27 февраля 2017 года.

Carthage теперь использует только двоичный файл pre-build , если доступный двоичный файл pre-build совместим.

При этом вам больше не нужно использовать: --no-use-binaries, чтобы избежать несовместимой структуры предварительной сборки.

Поэтому убедитесь, что у вас есть версия carthage больше 0.20 и просто выполните:

carthage update --platform iOS

Ответ 6

Так же, как @zirinisp сказал:

  • Вы можете использовать следующую команду: carthage update --platform iOS --no-use-binaries
  • Используя следующую команду: xcrun swift -version, чтобы увидеть версию Swift
  • Сделайте это: Xcode->preferences->locations, чтобы очистить полученные данные и данные архивов, самое главное изменить инструменты командной строки на "Xcode 8.1"
  • Используя следующую команду: xcrun swift -version, вы можете видеть, что быстрая версия 3.0.1
  • Установить Use Legacy Swift Language Version = NO

Я надеюсь, что это поможет вам

Ответ 7

У меня была точно такая же проблема с библиотекой XCTest_Gherkin, для меня это работало:

  • ProductSchemeXCTest-Gherkin
  • ProductBuild

Надеюсь, это поможет. Я использую Cocoapods.

Ответ 8

В Xcode Настройки сборки убедитесь, что в Ракурсных поисковых системах содержится соответствующая папка Carthage Build:

$(inherited)
$(PROJECT_DIR)/Carthage/Build/iOS