Core Motion конвертировать расстояние в км - PullRequest
0 голосов
/ 02 декабря 2018

В моем приложении "Здоровье" указано расстояние 0,1 км, а в приложении - 0,106.Как я могу изменить это на один десятичный?Это код, который я использую для получения текущей статистики:

pedometer.queryPedometerData(from: Date().startOfDay, to: Date()) { data, error in
            guard let activityData = data, error == nil else {
                print("There was an error getting the data: \(String(describing: error))")
                return
            }
            print((Double(activityData.distance!.intValue)/Double(1000))) // Print out optional distance in of walking and running in meters. / 1000 to convert from meter to km.
        }

Печать дает мне: 0.106

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

Вы можете использовать тип измерения Swift для преобразования вашей единицы длины и MeasurementFormatter для отображения ее пользователю:

let number: NSNumber = 106
let measurement = Measurement(value: number.doubleValue, unit: UnitLength.meters).converted(to: .kilometers)

let mf = MeasurementFormatter()
mf.unitOptions = .providedUnit
mf.unitStyle = .medium
mf.numberFormatter.maximumFractionDigits = 1
mf.string(from: measurement)   // "0.1 km"

В вашем случае:

guard let value = activityData.distance?.doubleValue else { return }
let measurement = Measurement(value: value, unit: UnitLength.meters).converted(to: .kilometers)

let mf = MeasurementFormatter()
mf.unitOptions = .providedUnit
mf.unitStyle = .medium
mf.numberFormatter.maximumFractionDigits = 1
mf.string(from: measurement)   // "0.1 km"
0 голосов
/ 02 декабря 2018

Что-то вроде:

let dist = Double(activityData.distance!.intValue)/Double(1000)
let str = String(format: @"%.1f", "", dist)
print(str)
...