2011-11-17 8 views
0

iOS 5.0 SDK열거 형, PList 또는 다른 저장 장치?

내가 정의한 '유형'매개 변수를 사용하는 방법이 있습니다. 그것을 '장소'라고 부를 수 있습니다. 이 유형은 다음과 같이 정의되었습니다.

typedef enum { 
    kBar = 0, 
    kRestaurant = 1, 
    kCafe = 2 
} Places 

내 메서드는 Places의 매개 변수를 사용합니다.

전달 된 장소의 유형에 따라, 나는 URL로 유형을 추가합니다 :

예 : http://www.domain.com/place=1

그러나 url 매개 변수가 문자열이어야 숫자가 될 수 없습니다.

예 : http://www.domain.com/place=restaurant

내가 열거 그래서 난 이것에 대한 올바른 접근 방법을 알아 내려고 노력하고 문자열이 될 수 없습니다 알고있다. 나는 plist가 있고 plist를 사전으로 읽는가? 다른 방법이 있습니까?

typedef enum { 
    PlaceTypeBar = 0, 
    PlaceTypeRestaurant = 1, 
    PlaceTypeCafe = 2 
} PlaceType 


@interface PlaceTypeHelper : NSObject 
    + (NSString *) stringForPlace:(PlaceType)place; 
@end 

@implementation 

+ (NSString *) stringForPlace:(PlaceType)place { 
    NSArray *places = [NSArray arrayWithobjects:@"Bar", @"Restaurant", @"Cafe", nil]; 

    return [places objectForKey:(NSInteger)place]; 
} 

@end 

Headups, 나는 어떤 아직 코드를 테스트했습니다 :

+0

자신이 직접 질문에 답변했습니다. 가장 좋은 방법은 열거 형에서 지원되는 문자열과 해당 키로 사전 (코드 또는 plist)을 만드는 것입니다. – Denis

답변

1

내가 좋아하는 일을 할 것입니다.

+0

실제로 함수 대신이 경로를 사용했습니다. 정보 주셔서 감사합니다. – jdruid

+0

우리는'PlaceType'이 Swift 코드에서 전혀 사용되지 않을지 여부를 모르기 때문에'typedef NS_ENUM (..., ...) {...}'로 갈 것입니다. 그렇지 않으면 명명 규칙은 괜찮아 보입니다. – holex

0

다양한 접근법이 있습니다. 여기에 내가 할 수있는 일이있다. 값의 유한 알려진 양 거기에 가정

, 당신은 지정된 형태의 문자열을 반환하는 간단한 기능을 수행 할 수 있습니다

(NSString*) StringForPlaceType(PlaceType thePlace) { 
    switch(thePlace) { 
    case kBar: 
     return @"Bar"; 
    case kRestaurant: 
     return @"Restaurant"; 
    case kCafe: 
     return @"Cafe"; 
    default: 
     // ... 
    } 
} 

이 같은 유연성을 원하지 않는다면 객체 또는 클래스에 대한 필요가 없습니다 동적 가치 등.

+0

그것은 실제로 내가 향하고 있었던 곳 이었지만 다른 옵션이 있는지 알지 못했습니다. 네, 한정된 수의 장소가 있습니다. – jdruid

+0

가능한 많은 솔루션이 있습니다. 값을 컴파일 타임에 알 수 있고, 변경 등을 기대할 때 값을 알 수 있습니다. 컴파일 타임에 값을 알고 변경할 필요가 없다면, 나는 그 기능을 사용할 것이다. 행운을 빕니다! –