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

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

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

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

Ответы [ 5 ]

0 голосов
/ 15 октября 2018

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

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

  1. Очистить мою сборку
  2. Перейдите на File/Workspace Settings и убедитесь, что выиспользуя Legacy Build System для Build System.И тогда проблема исчезла.
0 голосов
/ 24 сентября 2018

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

pod update ObjectMapper
0 голосов
/ 24 июня 2018

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

0 голосов
/ 18 июля 2018

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

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

sudo xcode-select -switch Xcode_beta_10.app

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

Обновление Carthage - платформа iOS - no-use-binaries

Вернитесь к своему проекту в Xcode, очистите, соберите
0 голосов
/ 10 июня 2018

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

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

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

В Swift 3 объявления типа var a: Int?приведет к наличию необязательного типа и объявлений типа 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

enter image description here

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

Обновление: Исправлена ​​ошибка в версии ObjectMapper 3.3.0.

...