2014-10-01 2 views
3

내 공공 기능의 몇 스위프트 또는 목적 C.8 스위프트 프레임 워크는 공개 API

를 사용하여 8 앱을 다른 아이폰 OS로 사용 가능한 스위프트 프레임 워크를 만들려고 해요, 내가 필요 아이폰 OS에 열거를 사용하는 방법 열거 형의 사용. 물론, 스위프트 열거 형을 가지고 있지만이는 내가 형식의 목적 C 스타일 열거 사용하려고 그래서 목표 C를 사용하여 클라이언트 응용 프로그램과 호환되지 않습니다 : 내가 넣어

typedef NS_ENUM(NSInteger, MyEnumType) 
{ 
    MyEnumTypeGreen, 
    MyEnumTypeBlue, 
    MyEnumTypeYellow 
}; 

이 열거 형을 공개하기를 이 선언은 PublicEnums.h에 있습니다.

#import "PublicEnums.h" 

을하지만 나는이 오류를 얻을 : 내 스위프트 코드에서 액세스 내 프레임 워크 프로젝트의 브리징 - header.h가이 선을 필요

Include of non-modular header inside framework module 'MyFramework' which flags a line in the auto-generated MyFramework-Swift.h file:

#import "/Users/sourcepath.../ObjectiveC/MyFramework-Bridging-Header.h" 

정말 방법이 없습니다를 Objective C 응용 프로그램에서 사용할 수있는 Swift 프레임 워크에서 모든 종류의 열거 형을 사용합니까?

답변

1

난 그냥이 새로운 프로젝트에서 테스트하고 다 잘 작동합니다. 나는 당신의 오류가 브리지 헤더를 올바르게 사용하지 않았기 때문이라고 생각합니다.

나는 import 문으로 브리징 헤더를 가져 오면 안된다고 생각한다. 그것은 자동으로 브리지 헤더 키 아래에 대상의 빌드 설정에 추가해야합니다

Objective-C Bridging Header ------  projectName/projectName-Bridging-Header.h 

이 키의 원 이름은 SWIFT_OBJC_BRIDGING_HEADER입니다.

테스트 : 엑스 코드 6.1에서 마지막 줄 rawValue를 사용하는 것이

let x = MyEnumType.Blue 
    println("\(x.toRaw())") // 1 

참고.

+0

감사합니다. 하지만 브리징 헤더를 가져 오는 것이 아닙니다. 그것은 당신이 설명했던대로 실제로 프로젝트 레벨에서 설정됩니다. 이 오류는 자동 생성 된 MyFramework-Swift.h가 자동으로 # import 문을 포함하기 때문에 발생합니다. 제 생각에는 스위프트 프레임 워크와 프레임 워크를 참조하는 샘플 응용 프로그램이 모두 포함 된 단일 작업 공간이 필요하다는 것을 재현하는 것 같습니다. – Daniel

+0

호환되지 않는 프레임 워크가있는 경우 관리자에게 업데이트를 요청하십시오. – Mundi

+0

프레임 워크 작성자입니다. – Daniel