2016-02-12 6 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; 
} 

EDIT:

К примеру, у меня есть глобальная функция, как это, но я не знаю, как поставить выше в этом типе формата:

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

Ответ Кристика хорош, но если у вас есть множество инструментов, вы можете создать класс, например myGlobalTools, и объявить свои методы как методы класса. Измените значение - на плюс в объявлении метода;

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

Вы можете позвонить им;

[myGlobalTools abbreviateNumber:aNum]; 
Смежные вопросы