ios - `NSFormatter` 有多少个晦涩的子类?知道其他人吗?

标签 ios macos cocoa nsformatter

如果您使用 Cocoa 一段时间,您可能熟悉 NSDateFormatterNSNumberFormatter。它们可以方便地从日期和数字创建格式化显示字符串,或者将日期或数字字符串转换为数值,同时支持不同的语言和区域设置。

几周前,我偶然发现了 NSDateComponentsFormatter,它可以让您创建格式化的时间间隔,例如“4 小时 37 分 17 秒”。很酷。

还有相关的 NSDateIntervalFormatter,它通过比较 2 个日期来创建字符串。

还有一些非常晦涩的 NSFormatter 子类:

NSMassFormatter
NSByteCountFormatter
NSLengthFormatter
NSEnergyFormatter
NSPersonNameComponentsFormatter

编辑:

根据评论,我添加了 NSPersonNameComponentsFormatter

在 Xcode 帮助系统中搜索“NS*Formatter”可以找到其中的大部分,但不是全部。 (看起来帮助文本必须正确索引才能进行搜索,这很烦人。)

这使我能够找到的总数达到

NSDateIntervalFormatter    -Difference between 2 dates
NSDateComponentsFormatter  -NSDateComponents to/from string
NSDateFormatter            -Formats NSDates as strings
NSNumberFormatter          -Formats numbers as strings
NSMassFormatter            -Formats mass quantity as strings 
NSByteCountFormatter       -Formats byte counts in K, MB, GB, etc.
NSLengthFormatter          -Formats length values
NSEnergyFormatter          -Displays energy qualities in Joules or Calories
NSPersonNameComponentsFormatter - displays localized formatted names

令人讨厌的是,这些格式化程序中的许多看起来都没有语言环境属性,因此使用它们来创建系统默认语言环境以外的语言/语言环境的格式化字符串并不是很容易。如果我遗漏了什么,请告诉我。

还有其他人知道我缺少的其他格式化程序吗?这些内容非常晦涩,但如果您需要它们,可以为您节省大量时间。

编辑#2:

问题第 2 部分:除了系统默认区域设置之外,是否有一种方法可以从缺少区域设置属性的格式化程序中获取输出?他们并不都拥有并尊重语言环境属性,这似乎很愚蠢。需要为当前语言环境以外的语言/语言环境生成输出是很常见的。

最佳答案

无需搜索。 NSFormatter documentation列出它的所有子类。查看页面顶部的“继承自” block 。

enter image description here

请注意,此信息在 Xcode 7.3 文档阅读器中不可用。它仅在在线文档中可用(或通过使用出色的 Dash reader )。

关于ios - `NSFormatter` 有多少个晦涩的子类?知道其他人吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36530419/

相关文章:

ios - 获取UIWebView内容并转为图片

ios - 如何在设备上的每个触摸位置周围绘制一个圆圈?

macos - 为什么 CATransform3DMakeRotation 不将 (0,0,1) 视为绕 Z 轴旋转?

objective-c - OSX SDK 上的文件管理器类?

cocoa - 如何在 cocoa 中获取applescript的变量值?

ios - 用动画替换 root-view-controller 自定义 segue?

ios - 将 backButtonBarItem 替换为 leftBarButtonItem

ios - 在 Objective-C 中解析 JSON 的最漂亮方法?

ios - Xcode 方案的 "analyze"部分中的 "test"、 "Build"和其他复选框是什么?

cocoa - 单击外部时关闭无边框 float NSWindow