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];
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;
}
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.