Проблема импорта заголовка Swift Bridging

следуя инструкциям, я создал заголовок моста и добавил его в свой проект. К сожалению, произошла следующая ошибка:

: 0: ошибка: не удалось импортировать заголовок Objective-C ' - - - path--to - - - header/....h'

Screenshot 1

в настройках сборки я добавил строку пути поиска заголовка к местоположению заголовка моста, но ничего не помогло.

кто-нибудь испытал эту проблему?

19 ответов


будьте осторожны, чтобы добавить файл в папку, что ваша ошибка жалуется! Я сделал ту же ошибку, если вы создадите файл из Xcode, он перейдет в папку: Project->Project->Header.h

и Xcode ищет заголовок Project ->.h

Это означает, что вам нужно поместить файл в папку проекта (ProjectName->ProjectNameFolder)!

надеюсь, что это помогает ;)

обновление: Я не уверен, понял ли я, что ты имеешь в виду, но попробуй решить эту проблему. проблема:
1. Удалите все ваши файлы моста, которые вы создали до сих пор.
2. Выберите основную папку проекта и нажмите новый файл->iOS->файл заголовка.
3. Напишите свой импорт в созданный файл заголовка.
4. Выберите проект внутри Xcode - >Build Settings, введите в поле поиска: bridging и введите в ключ SWIFT_OBJC_BRIDGING_HEADER имя файла заголовка или путь к нему!

Если вы выполните эти шаги, ваш файл заголовка будет создан на правильное расположение!

: буду надеяться, что поможет!


в моем случае это была фактически ошибка в результате круговой ссылки. У меня был класс, импортированный в заголовок моста, и этот файл заголовка класса импортировал заголовок swift (<MODULE_NAME>-Swift.h). Я делал это, потому что в заголовочном файле Obj-C мне нужно было использовать класс, который был объявлен в Swift, решением было просто использовать @class декларативный.

таким образом, в основном ошибка сказала "не удалось импортировать заголовок моста", ошибка над ним сказала <MODULE_NAME>-Swift.h файл не найден, выше это была ошибка, указывающая на конкретный файл заголовка Obj-C (а именно контроллер вида).

просматривая этот файл, я заметил, что у него есть-Swift.h объявлено внутри заголовка. Перемещение этого импорта в реализацию решило проблему. Поэтому мне нужно было использовать объект, давайте назовем его MyObject определено в Swift, поэтому я просто изменил заголовок, чтобы сказать

@class MyObject;

найти путь в:

Настройки Сборки/Swift Компилятор-Генерация Кода/Objective-C Bridging Header

и удалить этот файл. Тогда все будет хорошо.


#import <HexColors/HexColor.h>

, а не

#import "HexColor.h"

для меня удаление данные исправлено, я заметил, что даже если я выхожу из старой фиксации, происходит та же проблема.

вы можете добраться до этого окна формы опции - > проекты .


для меня это было потому что я забыл добавить его в Параметры построения цели.

enter image description here


"мы должны сказать Xcode где искать файлы мы перечисляем в нашем преодоление заголовка. Найдите раздел пути поиска и измените параметр уровня проекта на Пути Поиска Заголовка Пользователя, добавление рекурсивной записи для каталога "Pods":чалды/** " http://swiftalicio.us/2014/11/using-cocoapods-from-swift/


Я также испытал эту проблему, и, к сожалению, это просто ошибка в SDK + Xcode. Я поговорил с инженером WWDC, об этом и нескольких других проблемах, которые у меня были с CloudKit. Эти ошибки будут устранены в следующем семени Xcode.

Это забавная часть об использовании бета-версии программного обеспечения.


для других, у кого есть проблемы с добавлением класса swift в проект objective-C. это то, что работает для меня :

  1. создать новый файл swift. это заставит xcode запрашивать, хотите ли вы, чтобы xcode создал все настройки для проекта mix swift-objective-c, включая brigde-header.H для вас. нажать Yes.
  2. Теперь добавьте существующие файлы swift, которые вы хотите использовать в своем проекте.
  3. в файле реализации вы собираетесь использовать класс swift add : #импорт "YOURPROJECTNAME-Свифт.ч. " этот файл Xcode создать для вас. если ваш проект xcode является myProject, то " myProject-swift.h"

и это все. Теперь создайте класс swift в своем коде, как это было objective-c.


я импортировал в некоторые файлы из заголовочных файлов bridgin из cocoapods не надлежащим образом.

вместо импорта

#import <SomeCocoaPod/SomeCocoaPod.h>

я писал

#import "SomeCocoaPod.h"

и это была моя огромная ошибка


добавьте временный файл Objective-C в свой проект. Можете называть его как угодно.

выберите Да, чтобы настроить заголовок моста Objective-C.

удалите временный файл Objective-C, который вы только что создали.

в заголовке projectName-Bridging -.h только что созданный файл, добавьте эту строку:

' #import '

редактировать AppDelegate.быстрый файл:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    GMSServices.provideAPIKey("AIza....") //iOS API key

    return true
}

перейдите по ссылке для полной выборки


для меня он не выбирал "копировать элементы, если это необходимо" в пути назначения при добавлении фреймворка. Просто повторно добавьте фреймворк с выбранным параметром.


после первых нескольких дней борьбы мне, наконец, удалось успешно интегрировать регистрацию Facebook в мое приложение iOS. Вот шаги(я предполагаю, что вы уже установили Facebook SDK v4.1 или выше в ваших машинах):

  1. добавьте фреймворки Facebook-FBSDKCoreKit, FBSDKLoginKit под свой проект.
  2. не вносите изменений в настройки сборки как FB SDK v4.1 и выше больше не нужно наводить файлы заголовков.
  3. импорт FBSDKCorekit, FBSDKLoginKit в ViewController.swift, AppDelegate.swift files
  4. добавить информацию в pList, как упоминалось здесь

  5. создать приложение. И нет wohoo! нет ошибок времени компиляции.


У меня такая же проблема по другой причине,вот мой случай Я создаю проект, который должен включать меню слайдов , я использую SWRevealViewController lib, чтобы подойти к этому

когда я импортирую файлы библиотеки, я добавляю подпапку (SWRevealViewController )в разделе Поддержка файлов.ч. && M файлов, он запускает две ошибки, не может импортировать мост и SWRevealViewController.H не найден .

Как я это исправить

когда я перемещаю файлы для поддержки файлов напрямую (удалить подпапку) , SWRevealViewController.m автоматически добавляется к этапам сборки -- > компиляция источников и проблема исчезла

enter image description here


Я испытал такую ошибку, когда я добавлял расширение Today В свое приложение. Цель сборки для расширения была создана с тем же именем заголовка моста, что и цель сборки моего приложения. Это привело к ошибке, потому что расширение не видит файлы, перечисленные в заголовке моста моего приложения.

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

надеюсь, что это будет помощь.


Я фактически создал пустой исходный файл OSX Objective C в рамках проекта (где находятся все мои swift-файлы).

Я добавил импорт, а затем удалил .м.


среди других исправлений, у меня была ошибка, когда я пытался сделать продукт->архив. Оказывается, у меня было это:

Objective-C Bridging Header
  Debug (had the value)
  Release (had the value)
    Any architecture | Any SDK (this was blank - problem here!)

после установки его в этой последней строке он работал.


была аналогичная проблема, которая не могла быть решена каким-либо решением выше. Мой проект использует CocoaPods. Я заметил, что наряду с ошибками я получил предупреждение со следующим сообщением:

Uncategorized: Target 'Pods' of project 'Pods' was rejected as an implicit dependency for 'Pods.framework' because its architectures 'arm64' didn't contain all required architectures 'armv7 arm64'

enter image description here

поэтому решение было довольно простым. Для проекта Pods измените Построение Архитектуры Active Только флаг нет и первоначальная ошибка исчезла.


Set Прекомпилировать Мостовой Заголовок to нет Исправлена проблема для меня.