Ber*_*ron 3 cocoa objective-c nslocalizedstring
在检查了一些主题之后,我仍然无法弄清楚:使用静态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
Run Code Online (Sandbox Code Playgroud)
我知道NSLocalizedString是一个定义的宏#define NSLocalizedString(key, comment) \
[[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil],
但是没有多大帮助:S.
长话短说,以防止文档的多个部分中的相同字符串的多重定义(这将阻止我的整个应用程序中的一笔编辑).
考虑一个示例,其中定义的冗余是明确的:
//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
Run Code Online (Sandbox Code Playgroud)
当然,它在一个安静密集和大的项目中更有意义,其中字符串将用于差异方法,并且在使用大量类似本地化字符串的上下文中.
通常,这应该都在您的实现文件中:
static NSString* myString = nil;
@implementation myClass
+ (void)initialize
{
myString = NSLocalizedString(@"min", nil);
}
- (NSString *)aMethod
{
return myString;
}
@end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1676 次 |
| 最近记录: |