Чи існують в Objective-C ярлики для конкатенації рядків (stringByAppendingString:
), або ярлики для роботи з 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.