Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在何处使用参数定义长消息字符串_Ios_String - Fatal编程技术网

Ios 在何处使用参数定义长消息字符串

Ios 在何处使用参数定义长消息字符串,ios,string,Ios,String,我想在iOS应用程序中显示一些带有参数的较长消息(>100个字符)。它们将出现在应用程序的不同部分,并包含有关某些进程状态的信息,例如 [_labelProgressInformation setText:[NSString stringWithFormat:@"%@ is busy.",currentProcess.Name]]; [_labelUserInformation setText:[NSString stringWithFormat:@"Please wait for %@ to

我想在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]];
问题是我应该在哪里定义它们?我希望在很多地方避免硬编码。理想情况下,我希望将它们放在一个文件中,以便在必要时可以快速编辑它们。我该怎么做?定义需要参数的消息的正确方法是什么?

为此,请选择宏 只需创建新的头文件(新文件->源->头文件)

定义宏,如

#define PROGESSTEXT(text) ([NSString stringWithFormat:@"%@ is busy.",text])
然后在需要的地方使用它,比如

PROGESSTEXT(@"Helloooooo")

    NSLog(@"%@",PROGESSTEXT(@"Helloooooo"));

结果:Helloooo正忙。

解决此问题的最佳方法,同时考虑到应用程序的潜在多语言使用,是使用本地化的
.strings
文件。这样,您就可以使用一个键和预定义的Xcode宏
NSLocalizedString(,)
引用相应的字符串值,该宏将该键作为
NSString
和该特定字符串的可选注释

请注意,如果您只提供一种语言的应用程序,这种方法也会带来回报,它通常被认为是最佳实践

使用此功能的示例如下所示:

您有一个本地化文件:
可本地化。字符串
(英文)带有条目:

"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"

您可以阅读更多关于本地化或关注的内容。

谢谢,这正是我想要的。谢谢您的回复,但我认为nburk的方法更好一些。