से कम अंतराल के लिए गलत स्ट्रिंग देता है IOS 8 पर NSDateComponentsFormatter का उपयोग कर रहा हूं और मैंने stringFromTimeInterval:
विधि के कार्यान्वयन में संभावित बग देखा है, लेकिन मैं इसे निश्चित रूप से नहीं कह सकता।NSDateComponentsFormatter stringFromTimeInterval 1 मिनट
यह मैं कैसे फ़ॉर्मेटर की स्थापना की है है:
NSDateComponentsFormatter *formatter = [[NSDateComponentsFormatter alloc] init];
formatter.zeroFormattingBehavior = NSDateComponentsFormatterZeroFormattingBehaviorDefault;
formatter.allowedUnits = NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
formatter.unitsStyle = NSDateComponentsFormatterUnitsStylePositional;
अब जब मैं stringFromTimeInterval:
विधि, फ़ॉर्मेटर रिटर्न या तो 1
या 01
, जो स्पष्ट रूप से गलत है, यह होना चाहिए करने के लिए 60 सेकंड से कम कुछ भी पारित 0:XX
जैसे कुछ वापस करें।
मैंने यह भी देखा है कि unitsStyle
को NSDateComponentsFormatterUnitsStylePositional
पर बदलकर विधि सही स्ट्रिंग देता है!
उदाहरण:
unitsStyle = NSDateComponentsFormatterUnitsStylePositional
के साथ:
(lldb) po [formatter stringFromTimeInterval:12]
= "1"
=> लौट चाहिए "00:12" !!
unitsStyle = NSDateComponentsFormatterUnitsStyleAbbreviated
साथ
:
(lldb) po [formatter stringFromTimeInterval:12]
= "12 s"
= सही>!
इससे मुझे लगता है कि यह ऐप्पल के एपीआई के कार्यान्वयन में एक बग है, या क्या मुझे कुछ याद आ रही है?
चेक आउट मेरा उत्तर/नीचे काम के आसपास ... – MiKL
मैं जानता हूँ कि यह समाधान नहीं है, लेकिन अगर यह 60 से कम है तो आप सिर्फ timeInterval से नाव स्ट्रिंग मान सेट कर सकते हैं: अगर (self.timeInterval <60) { stringFromInterval = [NSString stringWithFormat: @ "% 2.0f", self.timeInterval]; } क्या आपने ऐप्पल डेवलपर फ़ोरम में पूछने के लिए सहमति दी है? – xarly