XCode не создает автоматически заголовок моста?

Я импортировал файл Obj-C в свой проект swift, и Xcode автоматически предложил мне создать заголовочный файл моста, как и ожидалось. Тем не менее, я удалил оба файла (перемещен в корзину), чтобы внести некоторые изменения, но когда я пытаюсь импортировать файл Obj-C еще раз, приглашение больше не появляется. Какова причина? Я даже протестировал этот же сценарий в другом проекте. Кажется, когда я удаляю автоматически созданный мостовой заголовок XCode, он не вызовет приглашение снова в другой раз. Почему это?

9 ответов

Решение

Причиной вашей проблемы является то, что настройки сборки XCode по-прежнему содержат путь к автоматически сгенерированному файлу заголовка моста. Вы не можете получить какие-либо ошибки сборки из-за файла заголовка (ProjectName-Bridging-Header.h) все еще существует в каталоге вашего проекта.

Как решить:

Нажмите на цель вашего проекта, перейдите на вкладку Build Settings ( выберите все вместо основных), найдите Bridging Header. Вы можете увидеть сгенерированную запись пути Xcode. Выберите его и нажмите кнопку "Удалить".

Кроме того, убедитесь, что удалили автоматически созданный файл заголовка моста Xcode (ProjectName-Bridging-Header.h) из вашего каталога проекта XCode.

Теперь попробуйте импортировать файл Obj-C еще раз. Вы можете увидеть приглашение создать файл заголовка моста, как и ожидалось.

Файл -> Новый файл -> Заголовочный файл

Сохраните его как заголовок YourApp-Bridging-Header

Затем перейдите в "Настройки сборки", найдите "Заголовок моста Objective-C" (как говорили ранее парни) и перейдите к заголовку моста как: YourApp/YourApp-Bridging-Header.h Где "YourApp /" - это имя приложения. Он может содержать пробелы, например "Ваше приложение /".

В моем случае в xCode 7.3.1 это работает

Существует другой способ создания Bridging Header в xcode, как упомянуто / предложено выше. Здесь я хотел бы дать вам лучший и самый простой способ создания моста.

  1. На рисунке 1 показано, что в текущий момент времени мост отсутствует.

Изображение1

  1. На рисунке 2 показано, что я скопировал папку, содержащую заголовочные файлы target-c, после копирования на экране появится всплывающее окно.

Image2

  1. Изображение 3 покажет всплывающее сообщение. Но после нажатия кнопки "Готово" вы заметите, что моста еще нет. для справки см. изображение2.

Image3

  1. Теперь в изображениях 5 и 6 я просто перетаскиваю заголовочный файл target-c, после чего вы получите всплывающее сообщение.

image4

  1. После нажатия на кнопку "Готово" вы получите сообщение " Вы хотели бы настроить заголовок моста Objective C"?, После нажатия на кнопку "Да" вы получите заголовок вашего моста, который вы можете увидеть на изображении 5.

Image5

если вы хотите сохранить свой заголовок в одной группе, используйте New Group и перетащите файл в эту группу.

Image6

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

Посмотрите настройки вашего проекта -> настройки сборки, прокрутите вниз до User-Defined раздел, посмотрите, есть ли у него ключ SWIFT_OBJC_BRIDGING_HEADER и если это имеет значение. если он там, он, вероятно, думает, что он у вас уже есть, в этом случае просто пересоздайте файл с тем же именем.

  1. Файл моста запрашивается только один раз в проекте.

  2. Если вы удалите файл случайно, вы должны создать новый файл моста. Это то же самое.

  3. Идти к File->New File->Header Fileи имя должно быть YourProjectName-Bridging-HeaderИли это не может быть распознано.

После рассмотрения этого вопроса около часа. Я обнаружил, что настоящая проблема была в папке!

Никогда не создавать / копировать папку.

Чтобы решить проблему-

Сначала создайте группу с любым именем. Затем скопируйте файлы Objective-C в группу (не в папку).

Тогда вам обязательно будет предложено создать файл заголовка моста.

Если вы хотите настроить его вручную, просто перейдите в Настройки сборки и измените выбор на ВСЕ с Базового (По умолчанию) или настроенного.

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

Измените на Все, и раздел Swift Compiler - General должен отображаться с дочерним параметром "Objective-C Bridging Header".

Файл моста запрашивается только один раз в проекте.

Если вы случайно удалите файл, вам придется создать новый файл моста. Это то же самое.

Перейдите в File->New File->Header File, и имя должно быть YourProjectName-Bridging-Header, иначе оно не может быть распознано.

Если вы работаете с React Native, наконец, вам нужно добавить следующие строки:

      //
//  Use this file to import your target's public headers that you would like to expose to Swift.
//
#import <React/RCTBridgeModule.h>
#import <React/RCTViewManager.h>
#import <React/RCTLog.h>

#import <Foundation/Foundation.h>
#import <React/RCTEventEmitter.h>
#import <React/RCTConvert.h>

@interface RCT_EXTERN_MODULE(core, NSObject)
@end
  1. открыть проект xcode
  2. Файл -> новый -> Файл -> если вы хотите файл.swift, затем щелкните файл Swift File .h, щелкните файл заголовка.m файл, цель c файл и т. Д.
Другие вопросы по тегам