2010-05-11 4 views
0

저는 예전처럼 SWOS (또는 사각 같은 세계의 축구)와 같은 돈을 표시하고 싶습니다.Objective C는 현명한 축구와 같은 돈 형식을 보여줍니다.

IE 대신의 : $ 10,000,000 + 당신이있어 $ 10m, 10.5m, 대신 등

: $ 1,000,000 당신이있어 $ 1m

대신 : $ 1,500,000 당신은 $ 1.5M있어

또한 은 크고 작은 모두 인물에 대해 작동했습니다. 1K, 1.25k, 0.75K, 0.25k, 등

내가 궁금하네요

, SWOS 그것을 할하는 데 사용되는 방식과 유사 형식으로 돈을 표시하는 방법이있다?

감사합니다.

+0

중복 가능성 (http://stackoverflow.com/questions/3412659/ [목표 C (돈 포맷)에 기초 스크립트 변환] convert-basic-script-to-objective-c-money-formatting) –

답변

2

필요에 따라 NSFormatter 또는 NSValueTransformer의 하위 클래스를 작성하여이 작업을 수행 할 수 있습니다. 바인딩과 함께 값을 사용하려면 NSValueTransformer를 사용해야합니다. 값을 사용자가 편집 할 수 있고 유효성 검사를 수행해야하는 경우 NSFormatter를 사용하십시오. 여기

가 NSFormatter의 용기의 짧은 예이다의

- (NSString *) stringForObjectValue:(id)anObject 
{ 
    if(!anObject || ![anObject respondsToSelector:@selector(doubleValue)]) 
     return nil; 

    NSTimeInterval interval = [anObject doubleValue]; 

    double intervalInSeconds = fabs(interval); 
    double intervalInMinutes = round(intervalInSeconds/SECONDS_PER_MINUTE); 

    if(intervalInMinutes >= 0 && intervalInMinutes <= 1) { 
     if(!self.includeSeconds) 
      return (intervalInMinutes == 0 ? NSLocalizedString(@"less than a minute", @"") : NSLocalizedString(@"1 minute", @"")); 
     if(intervalInSeconds >= 0 && intervalInSeconds <= 4) 
      return NSLocalizedString(@"less than 5 seconds", @""); 
     else if(intervalInSeconds >= 5 && intervalInSeconds <= 9) 
      return NSLocalizedString(@"less than 10 seconds", @""); 
     else if(intervalInSeconds >= 10 && intervalInSeconds <= 19) 
      return NSLocalizedString(@"less than 20 seconds", @""); 
     else if(intervalInSeconds >= 20 && intervalInSeconds <= 39) 
      return NSLocalizedString(@"half a minute", @""); 
     else if(intervalInSeconds >= 40 && intervalInSeconds <= 59) 
      return NSLocalizedString(@"less than a minute", @""); 
     else 
      return NSLocalizedString(@"1 minute", @""); 
    } 
    else if(intervalInMinutes >= 2 && intervalInMinutes <= 44) 
     return [NSString stringWithFormat:NSLocalizedString(@"%.0f minutes", @""), intervalInMinutes]; 
    else if(intervalInMinutes >= 45 && intervalInMinutes <= 89) 
     return NSLocalizedString(@"about 1 hour", @""); 
    else if(intervalInMinutes >= 90 && intervalInMinutes <= 1439) 
     return [NSString stringWithFormat:NSLocalizedString(@"about %.0f hours", @""), round(intervalInMinutes/MINUTES_PER_HOUR)]; 
    else if(intervalInMinutes >= 1440 && intervalInMinutes <= 2879) 
     return NSLocalizedString(@"1 day", @""); 
    else if(intervalInMinutes >= 2880 && intervalInMinutes <= 43199) 
     return [NSString stringWithFormat:NSLocalizedString(@"%.0f days", @""), round(intervalInMinutes/1440.0)]; 
    else if(intervalInMinutes >= 43200 && intervalInMinutes <= 86399) 
     return NSLocalizedString(@"about 1 month", @""); 
    else if(intervalInMinutes >= 86400 && intervalInMinutes <= 525599) 
     return [NSString stringWithFormat:NSLocalizedString(@"%.0f months", @""), round(intervalInMinutes/43200.0)]; 
    else if(intervalInMinutes >= 525600 && intervalInMinutes <= 1051199) 
     return NSLocalizedString(@"about 1 year", @""); 
    else 
     return [NSString stringWithFormat:NSLocalizedString(@"over %.0f years", @""), round(intervalInMinutes/525600.0)]; 
} 
+0

NSFormatter에서 문서를 찾아 볼 것입니다. – zardon

관련 문제