Can Objective-C switch on NSString?

后端 未结 14 1138
不知归路
不知归路 2020-12-04 05:40

Is there a more intelligent way to rewrite this?

if ([cardName isEqualToString:@\"Six\"]) {
    [self setValue:6];
} else if ([cardName isEqualToString:@\"Se         


        
14条回答
  •  孤城傲影
    2020-12-04 06:32

    Here is the more intelligent way to write that. It's to use an NSNumberFormatter in the "spell-out style":

    NSString *cardName = ...;
    
    NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
    [nf setNumberStyle:NSNumberFormatterSpellOutStyle];
    NSNumber *n = [nf numberFromString:[cardName lowercaseString]];
    [self setValue:[n intValue]];
    [nf release];
    

    Note that the number formatter wants the string to be lowercased, so we have to do that ourselves before passing it in to the formatter.

提交回复
热议问题