Модуль, скомпилированный с помощью Swift 4.1.2, не может быть импортирован компилятором Swift 4.2 - PullRequest
0 голосов
/ 19 сентября 2018

Краткая история: Xcode 10 установлен на Swift 4, но использует Swift 4.2.

Длинная история: Наш проект не готов к Swift 4.2, поскольку наши зависимые фреймворки пока не являются Swift 4.2.Но я хотел бы, по крайней мере, использовать Xcode 10.

  • У меня установлены Xcode 9.4.1 и Xcode 10.
  • У меня есть инструменты командной строки, настроенные для использования Xcode 9.4.1:

enter image description here

  • В Xcode 10 у меня есть настройка проекта, Swift Language Version, установленная в Swift 4.

enter image description here

  • В командной строке я проверил версию Swift, которую использует оболочка: 4.1.2:

"swift --version Apple Swift версии 4.1.2 (swiftlang-902.0.54 clang-902.0.39.2)"

  • Я запустил обновление карты.
  • Я вышел из Xcode 10 и перезапустился.
  • Я глубоко очистил и удалил производные данные.
  • Я создаю и получаю эту ошибку:

"Модуль, скомпилированный с помощью Swift 4.1.2, не может быть импортирован компилятором Swift 4.2: ... / App / Carthage / Build / iOS / RealmSwift.framework / Modules / RealmSwift.swiftmodule / arm64.swiftmodule"

Для меня это означает, что у меня правильно настроена версия Swift (4.1.2), и Xcode все еще пытается использовать неправильную версию Swift (4.2).

У кого-нибудь есть предложения, как решить эту проблему?Я что-то пропустил?Ошибка XCode?

Ответы [ 4 ]

0 голосов
/ 02 апреля 2019

вы можете использовать несколько быстрых наборов инструментов .загрузить url swift toolchain загрузить после установки какой-либо версии.перезапустите ваш xcode, в меню xocde вы можете увидеть опцию toolchains.

0 голосов
/ 21 сентября 2018

Использование Realm с Xcode 10 требует сборки его из исходного кода.В Терминале пишите:

git clone --recursive https://github.com/realm/realm-cocoa.git

cd realm-cocoa

sh build.sh ios-swift
0 голосов
/ 21 сентября 2018

Я не уверен, но я думаю, что это причина:

У меня есть инструменты командной строки, настроенные для использования Xcode 9.4.1

Youприходится перекомпилировать ваши зависимости Swift 4, используя Xcode 10, потому что Swift не является ABI-стабильным , то есть двоичные файлы, скомпилированные с различными версиями компилятора, несовместимы.И даже двоичные файлы Swift 4.0, скомпилированные с различными версиями Xcode, могут быть несовместимы.

У меня нет большого опыта работы с Carthage, но я предполагаю, что вы должны использовать Xcode 10 в качестве инструмента командной строки, новам нужно установить другую версию языка Swift для использования в Xcode 10. Вероятно, она должна быть указана в проекте (в данном случае RealmSwift) или с использованием переменных среды, но вам понадобится кто-то другой, чтобы ответить более подробно, ябоюсь.

0 голосов
/ 20 сентября 2018

У меня была такая же проблема, и затем я понял, что не выбрал Xcode 10 в качестве моего Xcode.Попробуйте:

sudo xcode-select -s /Applications/Xcode10.app

Также, если вы будете переключаться между Xcode9 и 10, я рекомендую вам следующее: Если вы измените с 9 на 10, запустите mv Carthage Carthage9, а затем пересоберите Карфаген.Всякий раз, когда вы хотите переключиться обратно, переместите Карфаген в Carthage10 и выполните mv Carthage9 Carthage.Это сэкономит вам много времени на строительство.

...