是否可以将字符串枚举为整数以进行快速比较? (Objective-C)

Is it possible to enumerate strings as integers for a fast comparison? (Objective-C)

我需要将 3 NSString 枚举为 integers,以便比较两个数字并找出较小的数字。 3 个字符串是:

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

并且它应该与 if statement 中的另一个整数进行比较。这可能吗?

你听起来很需要enum。试试这个:

第 1 步: 像这样定义一个枚举:

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");
}

我不是 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
    }
}