Genveje i Objective-C til at sammenkæde NSStrings

Er der genveje til (stringByAppendingString:) string concatenation i Objective-C, eller genveje til at arbejde med NSString generelt?

Jeg vil f.eks. gerne lave:

NSString *myString = @"This";
NSString *test = [myString stringByAppendingString:@" is just a test"];

noget mere som:

string myString = "This";
string test = myString + " is just a test";
[NSString stringWithFormat:@"%@/%@/%@", one, two, three];

En anden mulighed:

Jeg gætter på, at du ikke er tilfreds med flere appends (a+b+c+d), i hvilket tilfælde du kunne gøre:

NSLog(@"%@", [Util append:one, @" ", two, nil]); // "one two"
NSLog(@"%@", [Util append:three, @"/", two, @"/", one, nil]); // three/two/one

ved hjælp af noget i stil med

+ (NSString *) append:(id) first, ...
{
    NSString * result = @"";
    id eachArg;
    va_list alist;
    if(first)
    {
        result = [result stringByAppendingString:first];
        va_start(alist, first);
        while (eachArg = va_arg(alist, id)) 
        result = [result stringByAppendingString:eachArg];
        va_end(alist);
    }
    return result;
}
Kommentarer (4)
Løsning

Jeg kan komme på to svar, men ingen af dem er lige så behagelige som at have en sammenkædningsoperator.

For det første kan du bruge en NSMutableString, som har en appendString-metode, hvilket fjerner noget af behovet for ekstra temp-strenge.

For det andet kan du bruge en NSArray til at sammenkæde via componentsJoinedByString-metoden.

Kommentarer (6)

Den eneste måde at gøre c = [a stringByAppendingString: b] kortere på er ved at bruge autokomplettering omkring punktet st. Operatoren + er en del af C, som ikke kender til Objective-C-objekter.

Kommentarer (0)