我正在寻找一个最佳实践,或标准/接受的方法处理在应用程序中的公制和英制测量。我有一个iOS应用程序,目前只在美国市场,但我想国际化,它为其他市场。其中一部分涉及处理公制和英制测量,并根据本地化或首选项覆盖显示正确的测量。
由于此应用程序是为旅行的人设计的,因此用户可能希望根据他们当前所在的国家/地区在一个系统和另一个系统之间切换,因此我需要管理这两组数据。
由于用户可以在任何一个系统中输入测量值,并希望在另一个系统中读取等效值,因此我需要某种方法来维护这两个系统。我的第一个想法是将所有测量值(长度、体积、质量、温度、压力)创建为元组,并在保存数据时计算丢失的部分。但是,由于这是我第一次同时处理两个测量系统,我想知道是否已经有一种处理此类数据类型的标准方法。
1条答案
按热度按时间kpbwa7wx1#
我建议使用Apple在Foundation框架中提供的
Measurement
API。这提供了一种封装测量单位和双精度值的方法,提供了一系列用于在不同单位之间进行比较和转换的方法。距离测量的简单示例:
字符串
在上面的代码中:
1.我们有一个
enum
MeasurementSystem
来表示我们将支持的单元系统:.metric
和.imperial
。MeasurementManager
类存储用户对测量系统的当前首选项。changeSystem(to:)
功能允许切换测量系统。getUserPreferredDistance(for:)
函数接收以米为单位的距离,并从中创建一个Measurement
对象,然后根据用户的首选系统,将该距离转换为适当的单位并将其格式化以供显示。您可以对其他类型的测量(体积、质量、温度等)重复类似的过程,并将用户的首选项存储在
UserDefaults
等持久性存储中,以备将来使用。通过这种方法,您可以利用Swift的内置功能来管理和转换单元,而不是重新发明轮子。