0

我想根据预定值将字符转换为整数,例如:

a = 0 
b = 1
c = 2
d = 3

ETC...

现在我正在使用 If/Else If,我只想知道是否有更快/更好的方法我应该这样做,因为转换列表可能会很长。

这是我现在使用的:

-(NSInteger)ConvertToInt:(NSString *)thestring {
    NSInteger theint;
    if([thestring isEqualToString:@"a"] == YES){
        theint = 0;
    } else if ([thestring isEqualToString:@"b"] == YES){
        theint = 1;
    } //etc...

    return theint;
}

这很好用,但正如我所说,如果它更有意义,我可以创建一个包含所有键/值的数组,然后通过它返回整数吗?

请提供示例,因为我是 Objective C/iOS 的初学者。我来自网络语言。

谢谢!

编辑:感谢大家的帮助。我使用了 taskinoors 的答案,但我用这个替换了给出错误消息的 NSDictionary:

NSDictionary *dict;
dict = [NSDictionary dictionaryWithObjectsAndKeys:
        [NSNumber numberWithInt:0], @"a",
        [NSNumber numberWithInt:1], @"b",
        [NSNumber numberWithInt:2], @"c", nil];
4

2 回答 2

4
unichar ch = [thestring characterAtIndex:0];
theint = ch - 'a';

请注意,'a'单引号是 character a,而不是 string "a"

如果值不像您的示例那样常规,那么您可以将所有预定义值存储到字典中。例如:

"a" = 5;
"b" = 1;
"c" = 102;

NSArray *values = [NSArray arrayWithObjects:[NSNumber numberWithInt:5],
    [NSNumber numberWithInt:1], [NSNumber numberWithInt:102], nil];
NSArray *keys = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];
NSDictionary *dic = [NSDictionary dictionaryWithObjects:values forKeys:keys];

theint = [[dic valueForKey:thestring] intValue];
于 2012-04-09T19:45:49.663 回答
1

如果您想在哪些字符串映射到哪些整数方面保持一定的灵活性,并且您的整数从 0 到 n-1 运行,其中数组中有 n 个唯一项,您可以执行以下操作:

-(NSInteger)ConvertToInt:(NSString *)thestring {
    NSArray *arr = [NSArray arrayWithObjects:@"a", @"b", @"c", @"d", nil];
    NSInteger theint = [arr indexOfObject:thestring];
    return theint;
}

现在这将每次构建数组,这将非常低效,最佳方法是在您的类中构建一次数组,然后只需使用 indexOfObject 方法调用对该数组的引用。

于 2012-04-09T19:50:51.050 回答