Enum, PList или какое-то другое хранилище? - PullRequest
0 голосов
/ 17 ноября 2011

iOS 5.0 SDK

У меня есть метод, который принял параметр как «тип», который я определил.Давайте назовем это «Места».Этот тип был определен следующим образом:

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

Мой метод будет принимать параметр Places.

На основе переданного типа Place я добавлю тип к URL:1008 *

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

Однако параметр url не может быть числом, он должен быть строкой.

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

Я знаю, что перечисления не могут быть строками, поэтому я пытаюсь найти правильный подход для этого.Есть ли у меня список, а затем читать список в словарь?Есть ли другой способ?

Ответы [ 2 ]

1 голос
/ 17 ноября 2011

Я бы сделал что-то вроде:

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 голосов
/ 17 ноября 2011

Существует множество разных подходов. Вот что я мог бы сделать сам.

Предполагая, что существует конечное и известное количество значений, вы можете сделать простую функцию, которая возвращает строку для данного типа:

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

Нет необходимости в объекте или классе, если вам не нужна гибкость, такая как динамические значения и тому подобное.

...