Интеграция закрытых смешанных сред Swift и Objective-C в приложение Swift
Я создал смешанную среду Objective-C и Swift, которая имеет единственный класс API, написанный на Swift:
@import PrivateIncludes
@objc open class FrameworkApi : NSObject {
@obj open static func setup(apiKey: String) {
}
}
Этот класс ссылается на несколько других классов: от Objective-C и Swift внутри фреймворка.
Мои файлы modulemap импортируют несколько файлов Objecive-C:
module PrivateIncludes {
header "./ObjcClassA.h"
header "./ObjcClassB.h"
...
}
При интеграции фреймворка в приложение Objective-C все работает как положено. Я импортирую фреймворк и использую его без проблем:
@import MyFramework;
[FrameworkApi setupWithApiKey:@""];
Это работает как ожидалось.
С другой стороны, при попытке импортировать фреймворк из кода Swift:
import MyFramework
компилятор жалуется:
ObjcClassA.h:10:9: 'ObjcClassB.h' file not found
поскольку ObjcClassA
использует ObjcClassB
, Даже общедоступные заголовки (что я не хочу делать) и их копирование в папку " Заголовки " не помогает.
Кажется, я что-то упустил.
1 ответ
Я считаю, что вам нужно добавить соединительный заголовок в ваш проект и импортировать в него ObjcClassB.h. Посмотрите этот документ - https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html