2016-02-12 144 views
0

有人可以幫助我將其轉換爲全局函數嗎?我將在多個地方使用此代碼,因此多次複製和粘貼都沒有意義。將函數轉換爲全局函數

我希望能夠撥打abbreviateNumber(number)並讓它通過該功能運行。

-(NSString *)abbreviateNumber:(int)num { 

    NSString *abbrevNum; 
    float number = (float)num; 

    if (num >= 1000) { 
     NSArray *abbrev = @[@"k", @"m", @"b"]; 

     for (int i = abbrev.count - 1; i >= 0; i--) { 

      int size = pow(10,(i+1)*3); 

      if(size <= number) { 
       number = number/size; 
       NSString *numberString = [self floatToString:number]; 

       abbrevNum = [NSString stringWithFormat:@"%@%@", numberString, [abbrev objectAtIndex:i]]; 
      } 
     } 
    } else { 
     abbrevNum = [NSString stringWithFormat:@"%d", (int)number]; 
    } 

    return abbrevNum; 
} 

- (NSString *) floatToString:(float) val { 
    NSString *ret = [NSString stringWithFormat:@"%.1f", val]; 
    unichar c = [ret characterAtIndex:[ret length] - 1]; 

    while (c == 48) { 
     ret = [ret substringToIndex:[ret length] - 1]; 
     c = [ret characterAtIndex:[ret length] - 1]; 

     if(c == 46) { 
      ret = [ret substringToIndex:[ret length] - 1]; 
     } 
    } 
    return ret; 
} 

編輯:

例如,我有這樣一個全局函數,但我不知道如何把上述這種類型的格式:

void showServerError() { 
    [[TWMessageBarManager sharedInstance] showMessageWithTitle:@"Server Error" 
    description:SERVER_ERROR 
    type:TWMessageBarMessageTypeError 
    duration:4.0]; 
} 

回答

2

你可以在NSString上添加這兩個函數作爲類別,並從那裏調用它們:

@interface NSString(MyNSStringCategoryName) 
+ (NSString *)stringByAbbreviatingNumber:(int)num; 
+ (NSString *)stringFromFloat:(float)val; 
@end 

NSString+MyNSStringCategoryName.h文件,

@implementation NSString(MyNSStringCategoryName) 
+ (NSString *)stringByAbbreviatingNumber:(int)num { 
    // ... your code 
} 

+ (NSString *)stringFromFloat:(float)val { 
    // ... your code 
} 
@end 
NSString+MyNSStringCategoryName.m

然後,您可以調用這些類的方法是這樣的:

abbrevString = [NSString stringByAbbreviatingNumber:someNumber]; 
floatString = [NSString stringFromFloat:someFloat]; 

你獲得模塊化這樣你不停地組合在一起字符串方法,同時也有讓他們可以在全球的利益。

1

Cristik的答案很好,但如果你有各種各樣的工具,你可以創建一個類,例如myGlobalTools,並將你的方法聲明爲類方法。將 - 改爲方法聲明中的一個加號;

 +(NSString *)abbreviateNumber:(int)num; 

你可以打電話給他們;

[myGlobalTools abbreviateNumber:aNum];