Υπάρχουν συντομεύσεις για την (stringByAppendingString:
) συνένωση συμβολοσειρών στην Objective-C, ή συντομεύσεις για την εργασία με το NSString
γενικά;
Για παράδειγμα, θα ήθελα να κάνω:
NSString *myString = @"This";
NSString *test = [myString stringByAppendingString:@" is just a test"];
κάτι περισσότερο σαν:
string myString = "This";
string test = myString + " is just a test";
[NSString stringWithFormat:@"%@/%@/%@", one, two, three];
Υποθέτω ότι δεν είστε ευχαριστημένος με τις πολλαπλές προσθήκες (a+b+c+d), οπότε θα μπορούσατε να κάνετε:
NSLog(@"%@", [Util append:one, @" ", two, nil]); // "one two"
NSLog(@"%@", [Util append:three, @"/", two, @"/", one, nil]); // three/two/one
χρησιμοποιώντας κάτι σαν
+ (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;
}
Δύο απαντήσεις μπορώ να σκεφτώ... καμία από τις δύο δεν είναι τόσο ευχάριστη όσο η ύπαρξη ενός τελεστή συνένωσης.
Πρώτον, χρησιμοποιήστε μια NSMutableString
, η οποία έχει μια μέθοδο appendString
, αφαιρώντας έτσι κάποια από την ανάγκη για επιπλέον προσωρινές συμβολοσειρές.
Δεύτερον, χρησιμοποιήστε μια NSArray
για τη συνένωση μέσω της μεθόδου componentsJoinedByString
.
Ο μόνος τρόπος για να κάνετε το c = [a stringByAppendingString: b]
συντομότερο είναι να χρησιμοποιήσετε την αυτόματη συμπλήρωση περίπου στο σημείο st
. Ο τελεστής +
είναι μέρος της C, η οποία δεν γνωρίζει τα αντικείμενα της Objective-C.