it-swarm.com.ru

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

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

34
John Durand

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

Как решить:

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

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

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

 enter image description here

77
Shamsudheen TK

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

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

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

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

19
Iulian Nikolaiev

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

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

 Image1

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

 Image2

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

 Image3

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

 Image4

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

 Image5

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

 Image6

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

7
Kumar

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

4
Fonix
  1. Только файл моста Запрашивать один раз в проекте.

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

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

3
ronan

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

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

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

0
Unome