Как использовать фреймворк только в указанной цели c в проекте iOS, учитывая необходимость его импорта в некоторые классы? - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть проект с несколькими целями, одна из которых использует специальный фреймворк. Фреймворк написан с использованием Objective- C, а мой проект написан с использованием Swift.

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

Я пытался использовать файл Bridging-header отдельно для каждой цели, но столкнулся с ошибкой компиляции, которая была не удалось найти структуру в файлах классов, которые ее импортируют!

The red area is that the special framework - TL; DR

My Вопрос в том, как добавить в проект Swift инфраструктуру Objective- C с несколькими целями, учитывая, что ее следует использовать как в одной цели, так и в файле заголовочного моста?

1 Ответ

0 голосов
/ 09 мая 2020

Через пару дней мне удалось ее решить.

1) Добавить пользовательский флаг (MY OPTIONS), а также #ifdef и #endif в файл BridgingHeader.h. как на следующем рисунке:

enter image description here

2) Выберите цель (указать c) -> Настройки сборки -> Макросы препроцессора, затем добавьте

MY_OPTIONS = 1

3) Выберите цель (указать c) -> Настройки сборки -> Компилятор Swift - Пользовательские флаги -> Другие флаги Swift, затем добавьте

-DMY_OPTIONS

4) Добавьте в свой класс эту строку, чтобы предотвратить ошибку компиляции при компиляции других целей

  #if MY_OPTIONS
      let specificVC = SpecificViewController()
      self.present(specificVC, animated: true, completion: nil)
  #endif
...