在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";
受Chris的NSMutableString想法的启发,我做了一个完美的宏。
它支持插入nil元素,没有任何异常。
#import <libextobjc/metamacros.h>
#define STR_CONCAT(...) \
({ \
__auto_type str__ = [NSMutableString string]; \
metamacro_foreach_cxt(never_use_immediately_str_concatify_,, str__, __VA_ARGS__) \
(NSString *)str__.copy; \
})
#define never_use_immediately_str_concatify_(INDEX, CONTEXT, VAR) \
[CONTEXT appendString:VAR ?: @""];
例子:
STR_CONCAT(@"button_bg_", @(count).stringValue, @".png");
// button_bg_2.png
如果你喜欢,你可以使用id类型作为参数使用[VAR description]而不是NSString。
正在尝试在lldb窗格中执行以下操作
[NSString stringWithFormat:@"%@/%@/%@", three, two, one];
这错误。
而是使用alloc和initWithFormat方法:
[[NSString alloc] initWithFormat:@"%@/%@/%@", @"three", @"two", @"one"];