Модуль, скомпилированный с помощью Swift 4.1.2, не может быть импортирован в Swift 4.1.50: ошибка Xcode 10

Вышел Swift 4.2, и я получаю это сообщение об ошибке в своем проекте при использовании ObjectMapper и некоторых других модулей:

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

Итак, как мне сказать Xcode начать обновление моего проекта и перенести его на Swift 4.2?


person Sahil Kapoor    schedule 05.06.2018    source источник
comment
О каком модуле идет речь?   -  person matt    schedule 06.06.2018
comment
Аламофайр, ObjectMapper   -  person Sahil Kapoor    schedule 06.06.2018
comment
Вы очистили свой проект?   -  person Paulw11    schedule 06.06.2018
comment
Вероятно, дубликат stackoverflow.com/questions/40250381/   -  person matt    schedule 06.06.2018
comment
Да, чистил проект.   -  person Sahil Kapoor    schedule 06.06.2018
comment
Возможный дубликат stackoverflow.com/questions/46659988/   -  person Cœur    schedule 06.06.2018
comment
swift.org/blog/iuo   -  person Mohammad Razipour    schedule 20.06.2018


Ответы (5)


В Swift 4.2 внесены изменения в реализацию Неявно развернутый необязательный (IUO) в соответствии с swift blog теперь неявно развернутый необязательно T! будет считаться T? with и extra, чтобы компилятор знал, что это неявная необязательная развёртка.

Вы должны принять во внимание новую ментальную модель для ННП! быть синонимом? с добавлением того, что он добавляет флаг в объявление, позволяющий компилятору знать, что объявленное значение может быть неявно развернуто.

Из-за этого изменения может возникнуть некоторая проблема совместимости исходного кода, которая может потребовать от вас изменения кода, прежде чем он будет успешно скомпилирован.

В Swift 3 объявления типа var a: Int? приведет к наличию типа Optional и таких объявлений, как var b: String! приведет к тому, что b будет иметь тип ImplicitlyUnwrappedOptional. Он изменился в Swift 4.2, поэтому он показывает ошибку для ObjectMapper для Xcode 10, который поставляется с Swift 4.2 и аналогичная реализация была сделана для 3. * для Xcode 10.

В библиотеке Objectmapper есть несколько объявлений функций, которые раньше показывали предупреждения для swift 4.1, а теперь отображаются как ошибки для swift 4.2. См. Изображение ниже для предупреждений в Xcode 9.4 и Swift 4.1.

введите описание изображения здесь

Есть несколько запросов на вытягивание в репозитории ObjectMapper GitHub, который устранил проблему, но они ждут новая бета-версия Xcode согласно обсуждениям, поскольку в ней используется директива компилятора будет выпущена с новой бета-версией Xcode.

Обновление. Проблема устранена в версии ObjectMapper 3.3.0.

person Suhit Patil    schedule 10.06.2018

Вы не компилируете свой модуль Carthage с правильной быстрой версией. Итак, вам необходимо:

  1. Убедитесь, что ваш терминал указывает на ваше приложение Xcode 10 Beta, а не на ваш обычный Xcode:

sudo xcode-select -switch Xcode_beta_10.app

  1. Обновите ваши файлы Carthage:

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

  1. Вернитесь к своему проекту в Xcode, очистите, соберите
person Ed.    schedule 18.07.2018

Запустите эту команду ниже в каталоге вашего проекта с помощью терминала. Это обновит ваш модуль. Надеюсь, это решит вашу проблему.

pod update ObjectMapper
person Sagar Unagar    schedule 24.09.2018

Вам нужно переключить бета-версию Xcode в терминале и удалить старую версию документа Carthage в своем проекте. обновить carthage carthage update --platform iOS --no-use-binaries.

person user3488542    schedule 24.06.2018
comment
Под вопросом написано, что библиотеки используются как стручки (какао). - person Sahil Kapoor; 24.06.2018
comment
Верно ... тем не менее, это замечание пользователя 3488542 о carthage было полезно для меня (поскольку я использую carthage и сталкиваюсь с той же ошибкой :). - person Poulsbo; 05.07.2018

У меня была такая же проблема с Alamofire.

Мое исправление было

  1. очистить мою сборку
  2. перейдите к File/Workspace Settings и убедитесь, что вы используете Legacy Build System для Build System. И тогда проблема исчезла.
person Lalaphoon    schedule 15.10.2018
comment
Не работал для импорта RealmSwift. Модуль, скомпилированный с помощью Swift 4.1.2, не может быть импортирован с помощью Swift 4.2. - person Vito Valov; 25.10.2018