咨询:iOS中en_US_POSIX LocaleID常量在Foundation/Cocoa库的定义位置
在iOS中获取预定义的en_US_POSIX Locale常量
不用自己手动写"en_US_POSIX"字符串啦,Foundation框架已经为我们提供了现成的预定义常量,分两种开发场景说明:
Objective-C 中的定义
在Objective-C里,NSLocale类提供了一个全局字符串常量 NSLocalePOSIXLocaleIdentifier,它就是对应"en_US_POSIX"的官方定义。这个常量定义在NSLocale.h头文件中,你可以直接这样使用:
NSLocale *posixLocale = [NSLocale localeWithLocaleIdentifier:NSLocalePOSIXLocaleIdentifier];
你可以在Xcode里按住Command键点击这个常量,直接跳转到它的定义处,它的声明是:
FOUNDATION_EXPORT NSString * const NSLocalePOSIXLocaleIdentifier;
Swift 中的定义
Swift里的Locale结构体更便捷,直接提供了一个静态属性 Locale.posix,返回的就是配置为en_US_POSIX的Locale实例,不用再手动处理标识符字符串:
let posixLocale = Locale.posix // 如果确实需要标识符字符串,也可以通过下面的方式获取 let posixIdentifier = Locale.posix.identifier
这个属性的底层实现其实也是基于Objective-C的NSLocalePOSIXLocaleIdentifier常量,保证了跨语言使用的一致性。
为什么用系统常量而不是手动写字符串?
- 避免拼写错误:手动输入
"en_US_POSIX"很容易写错大小写或者下划线,用系统常量完全不会有这个问题; - 兼容性保障:虽然
en_US_POSIX是一个标准的、长期稳定的Locale标识符,但如果未来系统有相关调整,系统常量会同步更新,你的代码不需要做任何修改。
内容的提问来源于stack exchange,提问作者stonedauwg
相关产品推荐
相关产品推荐

