首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >静态NSLocalizedString

静态NSLocalizedString
EN

Stack Overflow用户
提问于 2013-10-15 10:40:11
回答 2查看 1.8K关注 0票数 3

在检查了一些主题之后,我仍然找不出什么:什么是(最好的)?使用静态NSLocalizedString的方法,即静态分配NSLocalizedString并轻松访问它。

理想情况下,我希望执行类似的操作(这不会编译,并且会出现Initializer element is not a compile-time constant错误):

代码语言:javascript
复制
 //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]

但这并没有多大帮助。

为什么?

长话短说,以防止同一字符串在文档的多个部分中的多个定义(这将防止在我的整个应用程序中进行一笔编辑)。

考虑一下这个示例,其中定义的冗余是静默显式的:

代码语言:javascript
复制
//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

当然,这在一个安静、密集和大的项目中更有意义,在这个项目中,字符串将用于不同的方法,而在上下文中,您可以使用许多类似的本地化字符串。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-15 10:54:10

一般来说,所有这些都应该在您的实现文件中:

代码语言:javascript
复制
static NSString* myString = nil;

@implementation myClass

+ (void)initialize
{
    myString = NSLocalizedString(@"min", nil);
}

- (NSString *)aMethod
{
    return myString;
}

@end
票数 5
EN

Stack Overflow用户

发布于 2013-10-15 12:14:31

好吧,还有一种不使用上面的初始化方法就可以编写相同内容的方法:-

代码语言:javascript
复制
static NSString* mystring=nil;
-(NSString*)aMethod
{
    mystring = NSLocalizedString(@"min", nil);
    return mystring;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19379163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档