是否可以将字符串枚举为整数以进行快速比较? (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
}
}
我需要将 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
}
}