在哪里定义带参数的长消息字符串

时间:2014-12-14 13:01:35

标签: ios string

我想在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]];

问题是我应该在哪里定义它们?我想避免在很多地方对它们进行硬编码。理想情况下,我希望将它们放在一个文件中,以便我可以在必要时快速编辑它们。我该怎么办呢?定义需要参数的消息的正确方法是什么?

2 个答案:

答案 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正忙着。