枚举,PList或其他存储?

时间:2011-11-17 15:52:21

标签: ios iphone enums storage

iOS 5.0 SDK

我有一个方法,将参数作为'类型'我定义的。让我们称之为“地方”。此类型定义如下:

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

我的方法会采用Places的参数。

根据传入的Place类型,我会将类型附加到url:

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

但是,url参数不能是必须为字符串的数字。

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

我知道枚举不能是字符串所以我试图找到正确的方法。我有一个plist然后把plist读成字典吗?还有另一种方式吗?

2 个答案:

答案 0 :(得分:1)

我会做类似的事情:

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,我还没有测试过代码。

答案 1 :(得分:0)

您可以采取许多不同的方法。这就是我自己可以做的事情。

假设有一个有限且已知数量的值,你可以做一个简单的函数,它返回给定类型的字符串:

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

除非您需要灵活性,例如动态值等,否则不需要对象或类。