Миграция в 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
Нажмите на ваш проект, а затем "Правый клик" → Удалить две зависимости
Надеюсь, поможет