2012-10-25 18 views
2

的我寫了這個連接兩個字符串:宏連接可變數目串

#define Append(x, y) [NSString stringWithFormat:@"%@%@",x,y] 

但是,如果我比只有兩個NSString對象更多。有沒有辦法修改這個以適用於任何數量的字符串值?

+0

這是否必須用宏來完成? - 它可以作爲一個功能或類別相對容易地完成。 – propstm

+0

選中此項:http://stackoverflow.com/q/510269/1032151 –

回答

3

它是否必須是一個宏?如果你可以使用一個方法,這個怎麼樣:

NSString* result = [self concatenateStrings:@"ABC",@"DEF",@"GHI",nil]; 

記住了零終止參數列表:

- (NSString*)concatenateStrings:(NSString*)string, ... 
{ 
    NSString* result = string; 

    va_list args; 
    va_start(args,string); 

    NSString* arg; 
    while((arg = va_arg(args,NSString*))) 
     result = [result stringByAppendingString:arg]; 

    va_end(args); 

    return result; 
} 

,你會喜歡的東西叫。

+1

使用NSMutableString,不要將NSStrings附加到循環中的NSStrings。 – TJez