Интеграция закрытых смешанных сред 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

Другие вопросы по тегам