2014-11-03 1 views
1

Я пытаюсь ссылаться на некоторые классы, определенные Swift, из моего файла реализации Objective-C, но по какой-то причине, хотя я получил заголовочный файл auto-generate, он, похоже, не содержит никакой информации о классах Swift в проекте.Автогенерируемый заголовок «ModuleName-Swift.h», не содержащий классы Swift

Мой класс Swift присваивается @objc, но даже после импорта файла «-Swift.h» у меня по-прежнему появляется ошибка «Использование необъявленного идентификатора» при компиляции.

Я не могу понять, что мне не хватает. У меня Defines Modules установлен в YES в проекте.

Также обратите внимание: если я нажимаю на символ из моего файла Obj-C, Xcode успешно находит определение в файле Swift.

+0

Я полагаю, вы убедились, успешно строить с Swift код включен в сборку, прежде чем пытаясь ссылаться на быстрые классы в objc? – ccwasden

+0

@ccwasden Да, если я не ссылаюсь на символ, проект компилируется отлично, включая код Swift. – devios1

ответ

1

Убедитесь в сборке настройки вы получили эту установку:

Objective-C Bridging Заголовок: $ (SRCROOT) /Sources/SwiftBridging.h

Когда-нибудь, когда вы импортируете быстрый файл непосредственно Xcode не предлагайте добавить заголовок моста. это должен быть шаг, даже если вы не называете цель-c быстрым.

0

Возможно, вам потребуется извлечь из NSObject.

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

class SwiftClassNotInHeader { } 
class SwiftClassInHeader : NSObject { } 

От MyApp-Swift.h

SWIFT_CLASS("_TtC6Server18SwiftClassInHeader") 
@interface SwiftClassInHeader : NSObject 
- (SWIFT_NULLABILITY(nonnull) instancetype)init OBJC_DESIGNATED_INITIALIZER; 
@end 

SwiftClassNotInHeader не в MYAPP-Swift.h

Смежные вопросы