Импорт структуры Objective-c в проект Swift framework

Я создаю структуру, в которой мне нужно импортировать некоторые рамки objective-c, пока мне нужно импортировать "Beaconstac.framework", но поскольку мы не можем добавить заголовок моста в проект SWIFT framework, поэтому мой вопрос заключается в том, как я могу использовать эту структуру в своем проекте, это не доступно напрямую в моем проекте, я попытался

импорт Beaconstac

но его ошибка "Нет такого модуля"

есть ли альтернатива для этого?

3 ответов


вам нужно импортировать структуру Beaconstac в заголовок зонтика. То есть, если вы обычно используете, например, #import <Beaconstac/Beaconstac.h> в заголовке моста Obj-C для структуры вам нужно поместить это в заголовок зонтика.

см. эту главу в документации Apple для получения дополнительной информации:

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-ID130


шаги для включения существующей структуры Obj C в проект SWIFT framework

скажем, мы создаем "SwiftProj".рамочный "проект в swift, который внутренне должен использовать objc Objective C".рамки"

  1. поместите ObjC.framework в папке Framework, ссылка на проект Swift framework через связанные фреймворки и библиотеки и создание модуля.файл modulemap на том же уровне.
  2. In модуль.modulemap

    module ObjC{ header "ObjC.framework/Headers/ClassA.h" export * }

  3. создать файл xcconfig (File->New->iOS->Other->файл настроек конфигурации)

  4. в файле xcconfig SWIFT_INCLUDE_PATHS = $(SRCROOT)/ MODULEMAP_PRIVATE_FILE = $(SRCROOT)/module.modulemap

теперь вы можете получить доступ к ObjC.Класс В SwiftProj.рамки


создайте файл с именем module.modulemap и включает следующее содержание:

module ObjCFrameworkName {
    header "ObjCFrameworkName.framework/Headers/ObjCFrameworkNameUmbrellaHeader.h"
    export *
}

имейте в виду, что вам нужно иметь правильный путь к зонтичному заголовку вашей структуры Obj-C, который может немного отличаться от того, что указано в приведенном выше примере.

Если вы все еще застряли, я настоятельно рекомендую взглянуть на этот проект.