2012-05-04 114 views
0

设置变量名我需要进行设置的语言取决于其他变量

我有:

#define kMenuSettingsHeaderrus @"Настройки" 
#define kMenuSettingsHeadereng @"Settings" 

,我想用这个全局变量取决于

_language= [[SettingsManager sharedSettingsManager] getLanguage]; 

_language can be @"rus" or @"eng" 

CCLabelTTF *settingsLabel = [CCLabelTTF labelWithString:[NSString stringWithFormat:@"kMenuSettingsHeader%@",_language] fontName:kLabelFontNameTTF fontSize:kMenuHeaderFontSize]; 
设置字符串标签

你能帮助我,在PHP我这样做$$

来自php的一个例子:

$a = "hello"; 
$$a = "world"; => $hello="world" 

回答

1

你在做事情就会给kMenuSettingsHeadereng或kMenuSettingsHeaderrus如因相反,他们将被视为字符串宏结果......所以用这个

#define kMenuSettingsHeaderrus @"Настройки" 
#define kMenuSettingsHeadereng @"Settings" 


_language= [[SettingsManager sharedSettingsManager] getLanguage]; 

CCLabelTTF *settingsLabel; 
if ([_langueage isEqualToString:@"rus"]) 
{ 
settingsLabel = [CCLabelTTF labelWithString:kMenuSettingsHeaderrus fontName:kLabelFontNameTTF fontSize:kMenuHeaderFontSize]; 
} 
else if ([_langueage isEqualToString:@"eng"]) 
{ 
settingsLabel = [CCLabelTTF labelWithString:kMenuSettingsHeadereng fontName:kLabelFontNameTTF fontSize:kMenuHeaderFontSize]; 
} 

检查语法...我没有X代码检查...希望这会有所帮助.. :)

+0

好吧,我知道这种方式...但我想要的东西像stringWithFormat:@“kMenuSettingsHeader%@”,_ language]更快地 –

+0

其实你正在做的是把它转换成字符串而不是宏... 您的代码不是settingsLabel = [CCLabelTTF labelWithString:kMenuSettingsHeaderrus fontName:kLabelFontNameTTF fontSize:kMenuHeaderFontSize]; 其settingsLabel = [CCLabelTTF labelWithString:@“kMenuSettingsHeaderrus”fontName:kLabelFontNameTTF fontSize:kMenuHeaderFontSize]; 现在想自己..他们是平等的吗? –

+0

我真的明白这一点,它导致我的问题:我如何连接变量的名称从第一个变量的名称和其他变量的值 –