在检查了一些主题之后,我仍然找不出什么:什么是(最好的)?使用静态NSLocalizedString的方法,即静态分配NSLocalizedString并轻松访问它。
理想情况下,我希望执行类似的操作(这不会编译,并且会出现Initializer element is not a compile-time constant错误):
//Somewhere in my header
static NSString* mystring = NSLocalizedString(@"min", nil); //Error : "Initializer element is not a compile-time constant"
@implementation myClass
(NSString*)aMethod
{
return myString;
}
@end我知道NSLocalizedString是由
#define NSLocalizedString(key, comment) \ [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil],
但这并没有多大帮助。
为什么?
长话短说,以防止同一字符串在文档的多个部分中的多个定义(这将防止在我的整个应用程序中进行一笔编辑)。
考虑一下这个示例,其中定义的冗余是静默显式的:
//MyDelegate.h
@property IBoutlet NSTextField* myTextField;
//MyDelegate.m
@implementation MyDelegate.m
@synthetize myTextField;
-(void)setTextFieldToDefaultValue
{
[myTextField setStringValue:NSLocalizedString(@"Name",@"This field is used to write one's name");
}
-(BOOL)isTextFieldStringDefault:(NSString*)myString
{
return [[myTextField stringValue] isEqual:NSLocalizedString(@"Name",@"This field is used to write one's name")];
}
@end当然,这在一个安静、密集和大的项目中更有意义,在这个项目中,字符串将用于不同的方法,而在上下文中,您可以使用许多类似的本地化字符串。
发布于 2013-10-15 10:54:10
一般来说,所有这些都应该在您的实现文件中:
static NSString* myString = nil;
@implementation myClass
+ (void)initialize
{
myString = NSLocalizedString(@"min", nil);
}
- (NSString *)aMethod
{
return myString;
}
@end发布于 2013-10-15 12:14:31
好吧,还有一种不使用上面的初始化方法就可以编写相同内容的方法:-
static NSString* mystring=nil;
-(NSString*)aMethod
{
mystring = NSLocalizedString(@"min", nil);
return mystring;
}https://stackoverflow.com/questions/19379163
复制相似问题