العثور على المسافة والعملة ووحدات درجة الحرارة وما إلى ذلك لبلد ما (iPhone)
-
23-09-2019 - |
سؤال
أثناء توطين تطبيقي ، مررت بالكثير من الوثائق ، في مكان ما أنا متأكد من أنني قرأت أن هناك طريقة للحصول على مجموعة من الوحدات المرتبطة بالمحطة.
أعتقد أنه قال شيئًا مثل "الوحدات القائمة على الثقافة ..." شيء ما.
أرغب في عرض درجة الحرارة والمسافة في فهرنهايت وأميال لبعض البلدان و 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"
أردت فقط أن ألاحظ ذلك ، كما هو الحال مع إصدار 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)