アプリのローカリゼーション中に、多くのドキュメントを調べました。どこかで、ロケールにリンクされたユニットのセットを取得する方法があることを確認しました。
「文化に基づく単位…」みたいなことを言っていたと思います。
一部の国では温度と距離を華氏とマイルで表示し、他の国では摂氏とキロメートルで表示したいと考えています。
iPhone SDK でこれらのユニットのリストにアクセスする方法はありますか。
ありがとうございます。
アプリのローカリゼーション中に、多くのドキュメントを調べました。どこかで、ロケールにリンクされたユニットのセットを取得する方法があることを確認しました。
「文化に基づく単位…」みたいなことを言っていたと思います。
一部の国では温度と距離を華氏とマイルで表示し、他の国では摂氏とキロメートルで表示したいと考えています。
iPhone SDK でこれらのユニットのリストにアクセスする方法はありますか。
ありがとうございます。
NSLocale
通貨単位を確認するために使用できます。しかし、帝国対メートル法については、自分でリストを作成する必要があります.
おっとっと。インペリアル対メトリックを確認できます。NSLocaleMeasurementSystem
とキーがありNSLocaleUsesMetricSystem
ます。
特定のユーザーのロケールと言語に適した文字列として CLLocationDistance を自動的に提示するために、Apple が素敵なライブラリ (iOS 7 で導入された MKDistanceFormatter) を提供していることに言及する価値があります。
少しあいまいな丸め (例: 300ft->350ft->400ft) を行いますが、適切な場合は単位間の変換 (例: フィート -> マイル) を適切に行います。本当に正確な値が必要でない限り、このクラスは 2 行のコードで距離の概算を返すのに最適です。
MKDistanceFormatter *distanceFormatter = [[MKDistanceFormatter alloc] init];
[distanceFormatter setUnitStyle:MKDistanceFormatterUnitStyleAbbreviated]; // Optional
NSString *formattedDistance = [distanceFormatter stringFromDistance:100];
NSLog(@"%@",formattedDistance); // Prints "350 ft"
迅速:
1.)
import MapKit
2.) フォーマッターの作成にはコストがかかるため、フォーマッターを遅延プロパティとして設定することをお勧めします。そうすることで、必要な場合にのみフォーマッターを初期化し、新しいフォーマッターを作成するのではなく再利用することができます。
lazy var distanceFormatter: MKDistanceFormatter = {
var tempDistanceFormatter = MKDistanceFormatter()
tempDistanceFormatter.unitStyle = .Abbreviated // .abbreviated in Swift 3
return tempDistanceFormatter
}()
3.)
let distanceString = self.distanceFormatter.stringFromDistance(yourDistance)