Работа с смешанной структурой. импортированный внутри файла Obj-C, но внутренние классы не видны, только публичные.
В документации четко указано, что внутренние кланы должны быть доступны между Swift и Obj-C:
Импорт Swift в Objective-C
Чтобы импортировать набор файлов Swift в тот же целевой объект инфраструктуры, что и ваш Objective-C, вы не используете необходимо импортировать что-либо в заголовок зонтика для фреймворка. Вместо этого импортируйте заголовочный файл сгенерированный Xcode для вашего кода Swift в любой файл Objective-C.m, с которого вы хотите использовать код Swift. Поскольку сгенерированный заголовок для целевой среды является частью frameworks public interface, только декларации, помеченные общественностью модификатор появляется в сгенерированном заголовке для целевой среды. Вы все еще могут использовать методы и свойства Swift, отмеченные внутренний модификатор из Objective-C части вашей структуры, пока они объявлены в классе, который наследуется от Objective-C класс. Для получения дополнительной информации о модификаторах уровня доступа см. Контроль доступа в Быстрый язык программирования (Swift 2).
Пример кода (создайте новый проект с каркасом)
// SwiftObject.swift
public class SwiftObject: NSObject {
public class func doSomething() {}
}
internal class YetAnotherSwiftObject: NSObject {
internal class func doSomething() {}
}
// SomeObject.m file
@implementation SomeObject
- (void)someMethod {
[SwiftObject doSomething];
}
- (void)someOtherMethod {
[YetAnotherSwiftObject doSomething]; // Use of undeclared identifier
}
@end