Switch에 맞춰서 쓴 소감. - 멘붕.

6482 단어 SwiftiOS
Objective-C에서 NS 그룹을 정의합니다.ENUM은 테이블 뷰에 있는 섹션 index의 용도를 표시하는 데 사용되며, Swift로 바뀐 후에도 기어오르기 방식으로 하려고 하지만 시도해 보니 좋은 결과를 얻었으면 좋겠다...

In Objective-C


Objective-C에서 완전 천성적인 것 같아요.
NS 정의ENUM
typedef NS_ENUM(NSInteger, DemoEnum) {
    DemoEnumZero = 0,
    DemoEnumOne = 1,
    DemoEnumTwo = 2
};
환경은 table view와 관련된 데이터 소스나 delegate methods에서 사용되며 section index에 연결됩니다.
switch 탑재 시 사용
NSInteger section = indexPath.section

switch (0) {
    case DemoEnumZero:
        NSLog(@"0");
        break;
    case DemoEnumOne:
        NSLog(@"1");
        break;
    case DemoEnumTwo:
        NSLog(@"2");
        break;
    default:
        break;
}
만족스러워 보이는데,
그런데 스위프트 이후로 세상이 바뀌었어요.ω・`

In Swift


Swift에서 raw value 형태를 Int의 enum으로 정의합니다.
enum DemoEnum: Int {
    case Zero = 0
    case One = 1 
    case Two = 2
}
enum형태가 Int일 때 첫 번째 값을 지정하면 뒤에 있는 값이 스스로 발송되기 때문에 필요하지 않은 사진 뒤에 있는 두 개의cases의rawvalues
만약 한 장의 사진을 사용한다면:
let section:Int = indexPath.section
switch section {
case DemoEnum.Zero:
    println("0")
    break
default
    break
}
바로 Xcode가 불평하는 것을 보았습니다.

Enum case pattern cannot match values of the non-enum type 'Int'
내 케이스의 형태는 비교할 형태와 다르기 때문에 내 편을 양보할 수 없다
끝까지 간호서류가 있으면 문제가 옆에 있다는 것을 알 수 있습니다. 꺼낸rawvalue를 비교해야 합니다. 즉, 사진을 찍어야 하는 모습입니다.
case DemoEnum.Zero.rawValue:
이때 미간을 찌푸리며 이게 무슨 꿍꿍이수작이냐고 생각했는데 쓰려면 쓰게 되잖아...
switch section {
case DemoEnum.Zero.rawValue:
    println("0")
case DemoEnum.One.rawValue:
    println("1")
case DemoEnum.Two.rawValue:
    println("2")
default
}
사진이 완성되면 손을 멈추고 각 케이스 뒤에 적어야 합니다.너무 좋은 것 같아요.
사진, 사진 다 미워할 것 같아.
다음에rawvalue 가져오는 이벤트를method에서 분리합니다
func fetchRaw(theEnum: DemoEnum) -> Int {
    return theEnum.rawValue
}
원래의 switch-case는 이렇게 변할 수 있고, 적어도 비교적 쉽게 읽을 수 있다
switch section {
case fetchRaw(.Zero):
    println("0")
case fetchRaw(.One):
    println("1")
case fetchRaw(.Two):
    println("2")
default
}
만약 어떤 건의나 의문이 있으면, 아래에 댓글로'3'y'에 대해 토론하는 것을 환영합니다.

동시 출발: 2029

  • Switch와 함께 사용한 소감-멘붕-곰집|기술소기
  • 좋은 웹페이지 즐겨찾기