Pergunta

Durante a localização do meu aplicativo, passei por muita documentação, em algum lugar tenho certeza de que li que existe uma maneira de obter um conjunto de unidades vinculadas ao local.

Eu acredito que disse algo como "unidades baseadas em cultura ..." alguma coisa.

Eu gostaria de exibir temperatura e distância em Fahrenheit e milhas para alguns países e Celsius e quilômetros para outros países.

Existe uma maneira de acessar uma lista dessas unidades no iPhone SDK.

Te agradece.

Foi útil?

Solução

Você pode usar NSLocale Para verificar a unidade de moeda, Mas para imperial vs. métrica, você precisa fazer uma lista.

Opa. Você posso Verifique a métrica imperial vs.. Existem NSLocaleMeasurementSystem e NSLocaleUsesMetricSystem chaves.

Outras dicas

Vale ressaltar que a Apple fornece uma boa biblioteca (MKDistanceFormatter, introduzida no iOS 7) para apresentar automaticamente uma distância de cllocation como a sequência apropriada para o local e o idioma de um determinado usuário.

Ele faz um pouco de arredondamento difuso (por exemplo, 300 pés-> 350ft-> 400 pés), mas converte bem entre as unidades (por exemplo, pés-> milhas, quando apropriado para fazê-lo). A menos que você exija valores realmente precisos, essa classe é perfeita para retornar estimativas aproximadas para distâncias em duas linhas de código.

MKDistanceFormatter *distanceFormatter = [[MKDistanceFormatter alloc] init];
[distanceFormatter setUnitStyle:MKDistanceFormatterUnitStyleAbbreviated]; // Optional
NSString *formattedDistance = [distanceFormatter stringFromDistance:100];
NSLog(@"%@",formattedDistance); // Prints "350 ft"

https://developer.apple.com/library/ios/documentation/mapkit/reference/mkdistanceformatter_class/reference/reference.html

Eu só queria notar que, como no lançamento de iOS8 Haverá novo NSFormatters Para pelo menos algumas das unidades que você mencionou.

Haverá NSLengthFormatter, NSMassFormatter e NSEnergyFormatter que são muito fáceis de usar - veja isso Tutorial do IOS8 NSFormatter. Aqui está um exemplo usando o NSLENCIMEFORMATTER com SWIFT:

let lengthFormatter = NSLengthFormatter()
println(@"Kilometer: %@", lengthFormatter.stringFromValue(1000, unit: .Kilometer))       //Kilometer: 1,000 km

Rápido:

1.)

import MapKit

2.) Como a criação do formatador é cara, é melhor definir o formatador como uma propriedade preguiçosa. Ao fazer isso, você pode inicializar o formatador somente quando for necessário e reutilizar o formatador, em vez de criar um novo.

lazy var distanceFormatter: MKDistanceFormatter = {
    var tempDistanceFormatter =  MKDistanceFormatter()
    tempDistanceFormatter.unitStyle = .Abbreviated // .abbreviated in Swift 3

    return tempDistanceFormatter
}()

3.)

let distanceString = self.distanceFormatter.stringFromDistance(yourDistance)

Eu extrai esse método para a extensão da string. Parece elegante

Versão Swift 4.1

import MapKit

extension String {
    init(distance: Double ) {
        let mkDistanceFormatter = MKDistanceFormatter()
        mkDistanceFormatter.unitStyle = .abbreviated
        self = mkDistanceFormatter.string(fromDistance: distance)
    }
}

Uso

let distance = Double(34234.0)
let stringDistance String(distance:distance)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top