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

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

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

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

Красная область - это специальные рамки - TL; DR

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


person Reza Dehnavi    schedule 27.04.2020    source источник


Ответы (1)


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

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

введите здесь описание изображения

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

MY_OPTIONS = 1

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

-DMY_OPTIONS

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

  #if MY_OPTIONS
      let specificVC = SpecificViewController()
      self.present(specificVC, animated: true, completion: nil)
  #endif
person Reza Dehnavi    schedule 09.05.2020