2010-08-20 10 views

Odpowiedz

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]; 
} 

EDIT:
Naprawiono 11, 12, 13 problem.

+2

Co z '11',' 12', '13'? – polygenelubricants

+0

Wzywasz powracający "11st" działa? "12"? "13rd"? "31st" jest dobre, ale "11st" to czyste pęknięcie. Te specjalne przypadki prawdopodobnie zasługują na swoje własne stwierdzenie 'if()', jeśli naprawdę zamierzasz objąć wszystkie swoje bazy. Również wolę, aby ta metoda była nazywana "ordinalFromInt", a nie "stringFromInt" - ta nazwa nie mówi mi, że dodajemy cokolwiek, spodziewałbym się, że będzie to skrót od '[NSString stringWithFormat: @ "% d", num] '. –

+0

Potrzebujesz tylko trochę więcej, tuż powyżej zwrotu: 'if (num> = 11 && num <= 13) stringAddition = @" th ";'. –