2012-05-04 154 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

我真的明白這一點,它導致我的問題:我如何連接變量的名稱從第一個變量的名稱和其他變量的值 –