是否有可能枚举字符串作为一个快速比较的整数?(objective - c)



我需要以一种容易比较两个数字并找出哪个较低的方式枚举3 NSString作为integers。这三个字符串是:

@"verde" = 1
@"giallo" = 2
@"rosso" = 3

,并与if statement中的其他整数进行比较。这可能吗?

我不是100%确定我理解,但这可能是你想要的。保持字符串到整数映射的字典:

NSDictionary *stringMap = @{
    @"verde": @(1),
    @"giallo": @(2),
    @"rosso": @(3)
};

,当涉及到比较时,做:

NSString *s1 = @"verde";
NSString *s2 = @"rosso";
NSNumber *n1 = stringMap[s1];
NSNumber *n2 = stringMap[s2];
if (n1 && n2) {
    NSComparisonResult result = [n1 compare n2];
    if (result == NSOrderedAscending) {
        // s1 < s2
    } else if (result == NSOrderedDescending) {
        // s1 > s2
    } else {
        // s1 == s2
    }
}

听起来你需要enum。试一下:

第一步:定义一个enum:

typedef NS_ENUM (NSInteger, MyStrings) {
    Verde = 0,
    Giallo,
    Rosso
};

步骤2:定义一个枚举类型属性,如下所示:

@property (nonatomic, assign) MyStrings string;

第三步:最后这样使用:

self.string = 2; // Setting property value
if (self.string < Verde) {
    NSLog(@"Small Value");
} else {
    NSLog(@"Big Value");
}

最新更新