iOS:使用Switch Case检查字符串前缀?

时间:2014-02-16 07:16:15

标签: ios objective-c nsstring switch-statement range

我目前正在尝试查看字符串的前两个字符,并且根据它们的不同,我想做点什么。有6种可能性:AA,BB,CC,AB,BC,CA。

我尝试了以下操作,但一直收到以下错误:

enter image description here

NSString *housing = [myArray firstObject];
    switch([housing compare:housing options:@"AA", @"BB", @"CC", @"AB", @"BC", @"CA" range:2]) {

        case 0:
            break;

        case 1:
            break;

        case 2:
            break;

        case 3:
            break;

        case 4:
            break;

        case 5:
            break;

        default:
            break;
    }

1 个答案:

答案 0 :(得分:4)

(1)NSString之前的compareNSString之后的compare是您要相互比较的字符串,因此要将“住房”与“住房”进行比较“住房”没有意义。

(2)你误导optionsoptions仅接受以下搜索选项 - NSCaseInsensitiveSearch,NSLiteralSearch,NSNumericSearch。

(3)范围必须是NSRange,而不仅仅是数字。

Here's the class reference.

编辑:想想一个非常优雅的解决方案,如果我自己也不这么说......(虽然这是凌晨3点,所以你应该仔细检查逻辑以确保我不会神志不清。)

// Check to see if the first 2 characters of the housing string are in an array of the characters
switch([[@"AA", @"BB", @"CC", @"AB", @"BC", @"CA"] indexOfObject:[housing substringWithRange:NSMakeRange(0, 2)]){

    case 0: // Do something if first 2 characters are AA
    break;

    case 1: // Do something if first 2 characters are BB
    break;

    // etc ...

    default: // Do something if not found
    break;
}