it-roy-ru.com

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

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

Xcode error деталь:

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

Убедитесь, что все выбранные цели успешно собраны с текущей настроенной версией Swift, прежде чем пытаться выполнить миграцию.

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

10
Varun Mehta

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

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

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

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

  3. Обновите базу кода до Swift 4

  4. Установите стручки еще раз, и все готово. 

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

5
Tino Krželj

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

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

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

0
Ben Kax

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

0
TheEye

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

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

0
Abdullah Khan

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

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

0
nyxee