我怎么知道哪个是iOS上的默认度量系统(英制或公制)?

ane*_*yzm 46 units-of-measurement ios

我怎么知道哪个是iOS上的默认度量系统(英制或公制)?

如何从设备设置中获取此首选项,以便知道应用程序中显示的内容?

谢谢

Dar*_*ust 79

NSLocale可以告诉你:

NSLocale *locale = [NSLocale currentLocale]; 
BOOL isMetric = [[locale objectForKey:NSLocaleUsesMetricSystem] boolValue];
Run Code Online (Sandbox Code Playgroud)

只有三个国家不使用公制:美国,利比里亚和缅甸.后者使用自己的系统,前者使用英制单位.

苹果文件说(强调我的):

NSLocaleUsesMetricSystem

标志的键,指示语言环境是否使用公制系统.相应的值是布尔NSNumber对象.如果值为NO,则通常可以采用美国测量单位(例如,法定英里).

适用于iOS 2.0及更高版本.

  • 注意:英国使用公制和英制的组合.重量往往以千克为单位测量,但距离(特别是在道路上)仍然以英里为单位. (5认同)

Naz*_*san 23

@DarkDust回答swift3

//User region setting return
let locale = Locale.current //NSLocale.current

//Returns true if the locale uses the metric system 
let isMetric = locale.usesMetricSystem
Run Code Online (Sandbox Code Playgroud)


小智 14

这是一个快速的版本

var locale = NSLocale.currentLocale()
let isMetric = locale.objectForKey(NSLocaleUsesMetricSystem) as! Bool
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!对于Swift 2将是:let locale = NSLocale.currentLocale() (2认同)

GIJ*_*JOW 11

对于swift 3

    let locale = NSLocale.current
    let isMetric = locale.usesMetricSystem
Run Code Online (Sandbox Code Playgroud)

  • `Locale.current.usesMetricSystem`在iOS 9中运行良好. (3认同)

Ene*_*nso 6

正如其他人之前提到的,英国混合使用公制和英制单位。

我建议使用MeassurementFormatteriOS 10 中引入的新功能来处理大部分这些差异:

import Foundation

let locale = Locale(identifier: "EN_UK")
locale.usesMetricSystem // true!
var formatter = MeasurementFormatter()
formatter.locale = locale
formatter.string(from: Measurement(value: 1000, unit: UnitLength.meters)) // 0.621 mi
Run Code Online (Sandbox Code Playgroud)

要将距离渲染为本地自然单位的字符串,请使用:

let distanceInMeters: CLLocationDistance = 1000
let formatter = MeasurementFormatter()
formatter.string(from: Measurement(value: distanceInMeters, unit: UnitLength.meters)) // 0.621 mi
Run Code Online (Sandbox Code Playgroud)

官方文档:https : //developer.apple.com/documentation/foundation/measurementformatter


小智 5

// Before iOS 16
Locale.current.usesMetricSystem

// iOS 16 and up
Locale.current.measurementSystem == .metric
Run Code Online (Sandbox Code Playgroud)

usesMetricSystem在 iOS 16 上已弃用