العثور على المسافة والعملة ووحدات درجة الحرارة وما إلى ذلك لبلد ما (iPhone)

StackOverflow https://stackoverflow.com/questions/2153302

سؤال

أثناء توطين تطبيقي ، مررت بالكثير من الوثائق ، في مكان ما أنا متأكد من أنني قرأت أن هناك طريقة للحصول على مجموعة من الوحدات المرتبطة بالمحطة.

أعتقد أنه قال شيئًا مثل "الوحدات القائمة على الثقافة ..." شيء ما.

أرغب في عرض درجة الحرارة والمسافة في فهرنهايت وأميال لبعض البلدان و Celsius و Kilometers لبلدان أخرى.

هل هناك طريقة للوصول إلى قائمة بهذه الوحدات في iPhone SDK.

شكرا لك.

هل كانت مفيدة؟

المحلول

يمكنك استخدام NSLocale للتحقق من وحدة العملة ، ولكن بالنسبة للإمبراطورية مقابل المتري ، تحتاج إلى وضع قائمة بنفسك.

أُووبس. أنت تستطيع تحقق من الإمبراطورية مقابل المتري. هناك يكون NSLocaleMeasurementSystem و NSLocaleUsesMetricSystem مفاتيح.

نصائح أخرى

تجدر الإشارة إلى أن Apple توفر مكتبة لطيفة (MKDistanceFormatter ، تم تقديمها في iOS 7) لتقديم cllocationDistance تلقائيًا كسلسلة مناسبة لموقع المستخدم واللغة المعطى.

إنه يقوم بتقريب غامض قليلاً (على سبيل المثال 300 قدمًا-> 350 قدمًا-> 400 قدم) ، ولكنه يتحول بشكل جيد بين الوحدات (على سبيل المثال-الأميال ، عندما يكون ذلك مناسبًا للقيام بذلك). ما لم تطلب قيمًا دقيقة حقًا ، فإن هذه الفئة مثالية لإعادة التقديرات الخشنة للمسافات في سطرين من التعليمات البرمجية.

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/mkdistanceformitter_class/reference/reference.html

أردت فقط أن ألاحظ ذلك ، كما هو الحال مع إصدار iOS8 سيكون هناك جديد NSFormatters لبعض الوحدات التي ذكرتها على الأقل.

سيكون هنالك NSLengthFormatter, NSMassFormatter و NSEnergyFormatter التي هي سهلة الاستخدام للغاية - انظر هذا IOS8 NSFormatter البرنامج التعليمي. فيما يلي مثال باستخدام nslengthFormatter مع Swift:

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

سويفت:

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)

لقد استخرجت هذه الطريقة لتمديد السلسلة. تبدو أنيقة

سويفت 4.1 نسخة

import MapKit

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

الاستخدام

let distance = Double(34234.0)
let stringDistance String(distance:distance)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top