我正在尝试通过连接其他NSString实例来实例化一个常量NSString。
下面是我在实现文件中所做的事情:
static NSString *const MY_CONST = @"TEST";
static NSString *const MY_CONCATENATE_CONST = [NSString stringWithFormat:@"STRING %@", MY_CONST];
这会导致以下编译错误: Initializer元素不是常量
我想这是因为stringWithFormat没有返回常量NSString,但既然在Obj-C中没有其他方法来连接字符串,我应该怎么做呢?
谢谢你的帮忙,
埃里克。
发布于 2011-03-03 23:00:06
我认为一定有办法做到这一点,但我能做的最好的事情就是使用#define指令。例如,
// Define the base url as an NSString
#define BASE_URL @"http://www.milhouse.co.uk/"
// Now the derived strings glued by magic
NSString *const kBaseURL = BASE_URL;
NSString *const kStatusURL = BASE_URL @"status.html";
NSString *const kBalanceURL = BASE_URL @"balance.html";
发布于 2010-06-17 16:49:28
静态常量对象的值是在编译时确定的,因此您确实不能在它们的初始化中添加任何方法调用。作为替代方案,您可以执行以下操作:
static NSString *const MY_CONST = @"TEST";
static NSString *MY_CONCATENATE_CONST = nil;
if (nil == MY_CONCATENATE_CONST)
MY_CONCATENATE_CONST = [NSString stringWithFormat:@"STRING %@", MY_CONST];
https://stackoverflow.com/questions/3060139
复制相似问题