개발하다보니 Swift 에서 선언된 enum 타입을 objc 코드에서 사용해야할 일이 있었는데요.
objc 코드로 된 .m 파일과 .h 파일에서의 사용방법이 조금 다른 것 같아 게시글로 정리해두려 합니다.
무엇보다 objc 헤더 파일에서 swift 로 선언된 enum을 사용하는 방법은 검색해도 안나와서 결국 스스로 해결하지는 못했습니다..ㅎㅎ
그럼 빠르게 본론으로 들어가겠습니다.
objc .m 파일에서 Swift 로 선언된 enum 타입 사용하기
일단 아래 코드처럼 Swift 로 enum이 선언되어 있다고 가정합니다.
objc 파일에서 사용해야하니 @objc 키워드도 추가합니다.
@objc
enum FoodType: Int {
case none
case egg
case milk
case cake
}
그럼 .m 파일에서는 사실 간단하게 #import <(프로젝트 이름)-Swift.h> 을 추가해서 브릿징 헤더를 통해 Swift 로 선언된 FoodType을 사용할 수 있게됩니다.
브릿징 헤더에 대한 설명은 아래 게시물을 참고해주세요!
objc .h 파일에서 Swift 로 선언된 enum 타입 사용하기
그럼 이제 검색으로도 찾기 힘든 objc 헤더에서 Swift 로 선언된 enum 타입을 사용하는 방법입니다!
근데 엄청 간단하더라구요.
objc 헤더 파일에 아래 코드를 추가하여 해당 enum 타입을 사용할 수 있습니다.
typedef NS_ENUM(NSInteger, FoodType);
근데 간혹 해당 enum 타입을 objc 헤더에 선언된 메서드에 사용했다가, 해당 메서드를 사용하는 다른 Swift 파일에서 해당 메서드를 찾을 수 없다는 오류가 발생하고는 하는데요.
아직까지 그 오류가 왜 발생하는지 이유를 찾지 못해서, 가끔 그런 오류가 발생할 때는 enum 타입 대신 rawValue (FoodType은 NSInteger) 를 넣어 사용하고는 합니다 😂
그래도 간단하죠?
'iOS > iOS' 카테고리의 다른 글
[Apple] userInteractionEnabled (0) | 2023.02.24 |
---|---|
UIView의 각 코너마다 서로 다른 radius 적용하기 (0) | 2022.04.19 |
[Objective-C] 기본문법 (함수, 변수) (0) | 2022.01.13 |
Objective-C 와 Swift 혼용 사용하기 (2) | 2022.01.13 |
Displaying a Bottom Sheet in iOS 15 Using UISheetPresentationController (0) | 2021.07.11 |
댓글