Модуль, скомпилированный с помощью 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
, для меня это работало:
-
Product
→ Scheme
→ XCTest-Gherkin
-
Product
→ Build
Надеюсь, это поможет. Я использую Cocoapods.
Ответ 8
В Xcode Настройки сборки убедитесь, что в Ракурсных поисковых системах содержится соответствующая папка Carthage Build:
$(inherited)
$(PROJECT_DIR)/Carthage/Build/iOS