2016-10-25 4 views
82

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

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

ответ

167

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

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

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

+7

Вероятно, вы сохранили мне час поиска. Спасибо. – djv

+22

Добро пожаловать. Чтобы быть честным, carthage должен быть немного более интеллектуальным и проверить быстрый номер версии. – zirinisp

+0

Любые другие идеи? Потому что это не сработало для меня, хотя в моем случае у меня проблемы с Unbox – Xernox

10

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

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

+0

Это сработало для меня, спасибо! Также команда, которая работала в терминале, была xcrun swift -version – HH887

+2

Все еще получала ту же проблему. Любые другие предложения –

+0

Коррекция, я тоже. Построенный он отлично, первый раз, и теперь снова получаю ошибку при попытке запустить ее. – HH887

18

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

DerivedData путь:

~/Library/Developer/Xcode/DerivedData/ 
+0

Спасибо, это сработало для меня. – Nosgoroth

+0

Работал для меня, я удаляю этот рассказ, удаляю папку с папкой и использую «pod install». И исправлено. –

+0

Привет. Это решение сработало для меня. Можете ли вы подробно объяснить, что происходит, когда мы очищаем производные данные? Как ошибка уходит? – iPhoneDeveloper

0

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

  1. Product ->Scheme ->XCTest-Gherkin
  2. Product ->Build

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

5

Как @zirinisp сказал:

  1. можно с помощью следующей команды: carthage update --platform iOS --no-use-binaries
  2. Используя следующую команду: xcrun swift -version, чтобы увидеть Swift версию
  3. это сделать: Xcode->preferences->locations очистить производные данные и архивировать данные, самое главное изменить инструменты командной строки на «Xcode 8.1»
  4. Используя следующую команду: xcrun swift -version, вы можете увидеть, что версия swift 3.0.1
  5. Set Use Legacy Swift Language Version = NO

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

9

Updating по умолчанию Xcode на новый на терминал работал для меня.

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

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

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

carthage update --platform iOS 
8

Просто чтобы дать последние обновления:

Карфаген выпустила version 0.20 27 февраля, 2017.

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

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

Поэтому убедитесь, что у вас есть картхейдж версия больше 0.20 и просто сделать:

carthage update --platform iOS 
+0

Это сработало для меня, спасибо! –

+0

XCode 8.3.3 После обновления Карфагена до 0.25 версии и после выполнения ниже, он работал для меня обновления картхейджа --platform IOS --no-потребительный двоичные файлы – anoop4real

+0

@ anoop4real Это не работает для вас без '- нет потребительной binaries'? Карфаген должен иметь возможность определить, совместим ли двоичный файл с вашей версией компилятора. Если это несовместимо, предполагается автоматически удалить загруженный двоичный файл и локализовать структуру. – kanekin

0

В Xcode Построить Настройки убедитесь, что ваш Framework Пути поиска содержат соответствующую папку Карфаген сборки:

$(inherited) 
$(PROJECT_DIR)/Carthage/Build/iOS 
Смежные вопросы