2014-11-03 2 views
1

Objective-C 구현 파일에서 Swift 정의 클래스를 참조하려고합니다.하지만 헤더 파일을 다음과 같이 만들었습니다. 자동 생성, 프로젝트의 Swift 클래스에 대한 정보를 포함하지 않는 것 같습니다.Swift 클래스를 제외하고 자동으로 생성 된 "ModuleName-Swift.h"헤더

My Swift 클래스는 @objc과 함께 사용되지만 아직 "-Swift.h"파일을 가져온 후에도 컴파일 할 때 "선언되지 않은 식별자 사용"오류가 발생합니다.

제가 누락 된 항목을 파악할 수 없습니다. 나는 Defines Modules을 프로젝트에서 YES로 설정했다.

참고 : Obj-C 파일에서 심볼을 명령 클릭하면 Xcode가 Swift 파일에서 정의를 성공적으로 찾습니다.

목표 - C 브리징 헤더 : $ (SRCROOT) /Sources/SwiftBridging.h

언젠가 당신이 신속 파일을 가져 직접 엑스 코드

+0

나는 당신이 스위프트 코드를 성공적으로 구축해야 만들었 가정 전에 빌드에 포함을 myApp-Swift.h에없는 objc에서 신속한 클래스를 참조하려고합니까? – ccwasden

+0

@ccwasden 예, 심볼을 참조하지 않으면 Swift 코드를 포함하여 프로젝트가 잘 컴파일됩니다. – devios1

답변

1

하면이 설정을 가지고 설정 빌드 확인 브리징 헤더를 추가하라는 메시지를 표시하지 마십시오. 그것은 당신이 신속하게 객관적인 -C를 호출하지 않아도 단계가 있어야합니다.

0

NSObject에서 파생해야 할 수 있습니다.

일부 Swift 클래스가 자동 생성 헤더를 통해 Obj-C에 노출되지 않은 유사한 상황이 발생했습니다. 해결책은 NSObject에서 Swift 클래스를 파생시키는 것입니다.

class SwiftClassNotInHeader { } 
class SwiftClassInHeader : NSObject { } 

은 MyApp를-Swift.h에서

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

SwiftClassNotInHeader는

관련 문제