반응형
스위프트-열거 형으로 Int 캐스트 : Int
Swift를 처음 접했고 (이번 주에 시작) Objective-C에서 내 앱을 마이그레이션하고 있습니다. 기본적으로 Objective-C에 다음 코드가 제대로 작동합니다.
typedef enum : int {
MyTimeFilter1Hour = 1,
MyTimeFilter1Day = 2,
MyTimeFilter7Day = 3,
MyTimeFilter1Month = 4,
} MyTimeFilter;
...
- (void)selectFilter:(id)sender
{
self.timeFilterSelected = (MyTimeFilter)((UIButton *)sender).tag;
[self closeAnimated:YES];
}
Swift로 번역 할 때 다음을 수행했습니다.
enum MyTimeFilter : Int {
case OneHour = 1
case OneDay = 2
case SevenDays = 3
case OneMonth = 4
}
...
@IBAction func selectFilter(sender: AnyObject) {
self.timeFilterSelected = (sender as UIButton).tag as MyTimeFilter
self.close(true)
}
그렇게하면 오류가 발생합니다.
'Int'는 'MyTimeFilter'로 변환 할 수 없습니다
(태그 속성을 사용하는) 내 접근 방식이 가장 좋은지 모르겠지만 어쨌든 내 앱의 다른 곳에서 이러한 종류의 캐스팅을 수행해야합니다. 누구 든지이 오류를 제거하는 방법에 대한 아이디어가 있습니까?
감사!
rawValue
이니셜 라이저 사용 : enum
s에 대해 자동으로 생성 된 이니셜 라이저 입니다.
self.timeFilterSelected = MyTimeFilter(rawValue: (sender as UIButton).tag)!
참조 : 스위프트는 언어 § 열거 프로그래밍
참고 :이 답변은 변경되었습니다. Swift의 이전 버전은 클래스 메소드 fromRaw()
를 사용하여 원시 값을 열거 된 값으로 변환합니다.
아래와 같은 비교를 위해 Enum 사용 :
enum LoanType: Int {
case FHA , VA, CONS, CASH
}
var loanType = LoanType.FHA
비교:
if loanType == .FHA
{
print("FHA")
}
값을 변경하려면
loanType = .CASH
참고 URL : https://stackoverflow.com/questions/25276775/swift-cast-int-into-enumint
반응형
'IT story' 카테고리의 다른 글
pycharm이 메소드를 정적으로 변경하도록 제안하는 이유 (0) | 2020.07.05 |
---|---|
안드로이드의 Asynctask vs Thread (0) | 2020.07.05 |
Google 태그 관리자의 404 오류 (0) | 2020.07.05 |
PHP는 컴파일되거나 해석됩니까? (0) | 2020.07.05 |
Nginx는 .php 파일을 실행하는 대신 다운로드로 제공합니다. (0) | 2020.07.05 |