我想在iOS应用程序中显示一些带有参数的较长消息(> 100个字符)。它们将出现在应用程序的不同部分,并包含有关某些进程状态的信息,例如
[_labelProgressInformation setText:[NSString stringWithFormat:@"%@ is busy.",currentProcess.Name]];
[_labelUserInformation setText:[NSString stringWithFormat:@"Please wait for %@ to finish. Make sure that... blah blah blah with instructions",currentProcess.Name]];
问题是我应该在哪里定义它们?我想避免在很多地方对它们进行硬编码。理想情况下,我希望将它们放在一个文件中,以便我可以在必要时快速编辑它们。我该怎么办呢?定义需要参数的消息的正确方法是什么?
答案 0 :(得分:2)
最好的方法是使用本地化的 .strings
文件,也就可能的多语言使用应用程序而言。这样,您可以使用键和预定义的Xcode宏NSLocalizedString(<key>, <comment>)
来引用相应的字符串值,该宏将{em>键作为NSString
和可选的注释这个特定的字符串。
请注意,如果您只使用一种语言提供应用,此方法也会获得回报,通常会将其视为最佳做法。
使用此示例的示例如下:
您有一个本地化文件:
Localizable.strings
(英文),条目:
"hello" = "Hello";
"hello_my_name_is" = "Hello, my name is %@";
然后,在您的应用程序中,只要您想要使用该字符串,就可以执行以下操作:
helloLabel.text = NSLocalizedString(@"hello", nil); // will write "Hello"
nameLabel.text = [NSString stringWithFormat:NSLocalizedString(@"hello_my_name_is", nil), @"John"]; // will write "Hello, my name is John"
您可以详细了解本地化here或关注this great tutorial。
答案 1 :(得分:1)
为此,请选择Macros 只需创建新的头文件(NewFile - &gt; Source - &gt; Header File)
定义像
这样的宏#define PROGESSTEXT(text) ([NSString stringWithFormat:@"%@ is busy.",text])
然后在需要时使用它,如
PROGESSTEXT(@"Helloooooo")
NSLog(@"%@",PROGESSTEXT(@"Helloooooo"));
结果:Helloooooo正忙着。