Миграция в Swift 4 из Swift 3.2 с ошибкой "не удалось импортировать заголовок заголовка"

Так как Apple выпустила бета-версию Xcode 9 с поддержкой Swift 4.0. Я пытаюсь обновить свой код до Swift 4.0 от Swift 3.2. Но он продолжает давать мне ошибку failed to import bridging header, тогда как мой проект успешно строится.

Подробности ошибки Xcode:

Не удалось преобразовать в текущий синтаксис Swift

Перед попыткой переноса убедитесь, что все выбранные цели успешно сработали с текущей версией Swift.

Кто-нибудь сталкивался с подобной ошибкой при обновлении базы кода до быстрого 4.

Ответ 1

У меня была аналогичная проблема в одном из моих проектов, и я решил следующее:

Я понял, что проблема CocoaPods.

  • Я удалил CocoaPods из моего проекта (если вы не знаете, как это сделать, проверьте Как удалить CocoaPods из проекта?)

  • Не забывайте, что если у вас есть тесты единиц и ui, вам нужно повторить 4-й шаг от ссылки выше на них.

  • Обновите свою базу кода до Swift 4

  • Установите контейнеры снова, и все готово.

Надеюсь, это поможет:)

Ответ 2

Убедитесь, что все цели компилируются, включая тесты. удалить NAME.xcworkspace после удаления Cocoapods из проекта

Это решило это для меня.

Ответ 3

Для меня моя миграция с 3.2 до 4.0 не удалась, тогда я всегда получаю это сообщение об ошибке при попытке изменить > Преобразовать > в текущий синтаксис Swift...

My Fix прост, установите версию проекта быстрой версии от 4.0 до 3.2 или любую версию, которую вы использовали.

Это связано с тем, что, хотя первая миграция не удалась, Xcode изменил быструю версию до 4.0 в настройках вашего проекта.

Ответ 4

Вероятно, хотя бы один из объективных классов c, которые вы ввели в заголовочный файл моста, не компилируется - закомментируйте все свои записи в заголовочном файле моста, а затем скомпилируйте - он должен иметь возможность импортировать заголовок моста сейчас, но конечно, генерирует много ошибок из-за не найденных классов. Теперь раскомментируйте строки один за другим, чтобы выяснить, какие из них приводят к сбою импорта, а затем исправить эти файлы.

Ответ 5

После изменения версии языка Swift в настройках сборки проекта и во всех целях мне пришлось изменить это объявление функции в AppDelegate.swift, чтобы:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) → Bool {//Override point for customization after application launch. return true }

Ответ 6

Просто обновите ваш модуль, и он разрешит его.

Чтобы обновить модуль: → откройте терминал и перейдите в каталог вашего проекта → введите обновление модуля

Это решило мою проблему.

Ответ 7

для нас то, что работало, было удалить UnitTest и UITests

Нажмите на ваш проект, а затем "Правый клик" → Удалить две зависимости

Надеюсь, поможет