분명히 Swift는 enum에서 문자열을 찾을 수 있습니다

3753 단어 Swiftobjectivec
Swift에서 Objectiver-C로 소프트 와이어를 이식할 때 생각나는 거...해결책도 있다

Swift에서 문자열 가져오기


Swift에서 enum에 지정된 case 문자열을 제거할 수 있습니다.
enum BloodType: String {
    case A
    case B
    case O
    case AB
}

BloodType.AB.rawValue // "AB"
잘 안 쓸 수도 있지만 제이슨 씻을 때 썼어요Json의 enum 문자열 사용 예에 예시를 적었어요)
그래서 이 Objective-C 버전도 이식을 부탁합니다...

Objective-C에서 문자열 가져오기


어쨌든 먼저 이식해 보자
typedef enum {
    A,
    B,
    O,
    AB
}BloodType;

BloodType.AB.rawValue // rawValueないよね....
그래서 못 받아서 곤란해요.
어떻게 해야 할지 고민한 결과 엔움에서 index(몇 번째 케이스)를 찾을 수 있기 때문에 문자열을 배열에 넣고 꺼낼 수밖에 없어요...
#define BloodTypeArray @"A", @"B", @"O", @"AB", nil

+ (NSString*) BloodTypeToString:(BloodType)value
{
    return [[[NSArray alloc] initWithObjects:BloodTypeArray] objectAtIndex:value];
}

// Usage
[[クラス名] BloodTypeToString:AB]; // @"AB"
그림 배열이 좀 번거롭지만 한 번 쓰면 사용하기 쉬워
Json의 enum 문자열 사용 예 Json도 예를 언어로 쓰기가 어려워서 예를 적어보려고 w. example.json { "name":"taro", "blood":"AB", "sex":"man", "age":"30", "parent_name":{ "father":"takeshi", "mother":"yuko" } } 이런 제이슨을 분석하면 엔음 2개를 만들어 볼까요? enum Example:String { case name case blood case sex case age case parent_name } enum Parent_name:String { case father case mother } // Usage let json=// Json의 Dictionary 분석 let parent_name = json[Example.parent_name.rawValue] as? Dictionary let father = parent_name[Parent_name.father.rawValue] as? String 이렇게 사용하실 수 있어요! 제이슨의 레벨을 일일이 떠올릴 필요 없이 키의 문자열을 가장 먼저 발표할 수도 있고, 키의 레벨을 추가해도 이해하기 쉬우므로 어디에다 붙여야 할지 한눈에 알 수 있다.

좋은 웹페이지 즐겨찾기