2010-08-20 5 views

Respuesta

7
- (NSString *)stringFromInt:(int)num { 
    NSString stringAddition; 
    if (num%100 >= 11 && num%100 <= 13) { 
     stringAddition = @"th"; 
    } 
    else { 
     switch (num % 10) { 
      case 1: stringAddition = @"st"; break; 
      case 2: stringAddition = @"nd"; break; 
      case 3: stringAddition = @"rd"; break; 
      default: stringAddition = @"th"; break; 
     } 
    } 
    return [NSString stringWithFormat:@"%i%@", num, stringAddition]; 
} 

EDITAR:
ha solucionado el problema 11, 12, 13.

+2

¿Qué pasa con '11',' 12', '13'? – polygenelubricants

+0

¿Usted llama al regresar al "11º" funcionando? "12nd"? "13rd"? "31" es bueno, pero "11" es rotura pura. Esos casos especiales probablemente merecen su propia declaración 'if()', si realmente vas a cubrir todas tus bases. También prefiero que este método se llame tal vez "ordinalFromInt", en lugar de "stringFromInt" - ese nombre no me dice que estamos agregando nada, espero que sea una abreviatura de '[NSString stringWithFormat: @ "% d", num] '. –

+0

Solo necesita un poco más, justo arriba del retorno: 'if (num> = 11 && num <= 13) stringAddition = @" th ";'. –