2

I wrote this to concatenate two strings:

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

However, what if I have more than just two NSString objects. Is there way to modify this to work for any number of string values?

1 Answers1

3

Does it have to be a macro? If you can use a method, how about this:

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

Which you would call with something like:

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

Remember to terminate the argument list with a nil.

Jay Slupesky
  • 1,893
  • 13
  • 14