Стремительное преодоление проблемы импорта заголовка



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




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




Screenshot 1



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



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

686   19  

19 ответов:

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

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

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

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

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

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

:D надеюсь, что помогает!

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

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

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

@class MyObject;

найти путь в:

Настройки Сборки Compiler Компилятор Swift-Генерация Кода/Цель-C Мостовой Заголовок

и удалить этот файл. Тогда ты должен быть в порядке.

#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, чтобы создать все параметры для смешивания Свифт-объективные-c проекта, включая бизнес-заголовка.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. создать приложение. И Ух ты! нет ошибок времени компиляции.

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

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

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

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

enter image description here

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

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

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

Я фактически создал пустой файл OSX Source 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

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

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

Comments

    Ничего не найдено.