반응형
Swift - 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
initializer: 자동으로 생성되는 initializer입니다.enum
s.
self.timeFilterSelected = MyTimeFilter(rawValue: (sender as UIButton).tag)!
참조: Swift Programming Language » 열거
메모: 이 답변은 변경되었습니다.이전 버전의 Swift는 클래스 메서드를 사용합니다.fromRaw()
raw 값을 열거된 값으로 변환합니다.
스위프트 5
@IBAction func selectFilter(sender: AnyObject) {
timeFilterSelected = MyTimeFilter(rawValue: sender.tag)
}
또한 열거형을 다시 Integer로 변환하는 방법을 알고 싶다면 다음을 수행할 수 있습니다.
enum MyTimeFilter : Int {
case OneHour = 1
case OneDay = 2
case SevenDays = 3
case OneMonth = 4
}
let currentValue = .One
let intValue = currentValue.rawValue
Jeffery Thomas의 답변을 자세히 설명하고 있습니다. 안전하게 사용하기 전에 깁스를 풀기 위해, 이것은 충돌을 피할 것입니다.
@IBAction func selectFilter(sender: AnyObject) {
guard let filter = MyTimeFilter(rawValue: (sender as UIButton).tag) else {
return
}
timeFilterSelected = filter
}
언급URL : https://stackoverflow.com/questions/25276775/swift-cast-int-into-enumint
반응형
'programing' 카테고리의 다른 글
WPF 텍스트 상자에서 포커스에 있는 모든 텍스트를 자동으로 선택하는 방법은 무엇입니까? (0) | 2023.04.29 |
---|---|
Git의 마스터 브랜치를 다른 브랜치에서 완전히 대체하려면 어떻게 해야 하나요? (0) | 2023.04.24 |
ComboBox에서 항목 그룹화 (0) | 2023.04.24 |
날짜가 주말인지 어떻게 판단하나요? (0) | 2023.04.24 |
테이블 수정:'Allow Nulls' 속성을 null이 아닌 상태에서 null을 허용하도록 변경하는 방법 (0) | 2023.04.24 |