Sto utilizzando NSDateComponentsFormatter su iOS 8 e ho notato un possibile errore nell'implementazione del metodo stringFromTimeInterval:
, ma non posso dirlo con certezza.NSDateComponentsFormatter stringFromTimeInterval restituisce una stringa errata per intervalli inferiori a 1 minuto
Ecco come ho creato il formattatore:
NSDateComponentsFormatter *formatter = [[NSDateComponentsFormatter alloc] init];
formatter.zeroFormattingBehavior = NSDateComponentsFormatterZeroFormattingBehaviorDefault;
formatter.allowedUnits = NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
formatter.unitsStyle = NSDateComponentsFormatterUnitsStylePositional;
Ora quando mi passa niente di meno di 60 secondi per il metodo stringFromTimeInterval:
, i rendimenti formattatore sia 1
o 01
, che è ovviamente sbagliato, dovrebbe restituire qualcosa come 0:XX
.
Quello che ho notato è che cambiando il unitsStyle
in qualsiasi cosa tranne NSDateComponentsFormatterUnitsStylePositional
il metodo restituisce una stringa corretta!
Esempio:
Con unitsStyle = NSDateComponentsFormatterUnitsStylePositional
:
(lldb) po [formatter stringFromTimeInterval:12]
= "1"
=> Dovrebbe restituire "00:12" !!
Con unitsStyle = NSDateComponentsFormatterUnitsStyleAbbreviated
:
(lldb) po [formatter stringFromTimeInterval:12]
= "12 s"
=> Corretta!
Questo mi permette di pensare che si tratti di un bug nell'implementazione dell'API di Apple o mi sto perdendo qualcosa?
Controlla la mia risposta/aggira in basso ... – MiKL
So che non è la soluzione, ma puoi semplicemente impostare il valore della stringa float da timeInterval se è inferiore a 60: if (self.timeInterval <60) { stringFromInterval = [NSString stringWithFormat: @ "% 2.0f", self.timeInterval]; } Avete in mente di chiedere nei forum degli sviluppatori Apple? – xarly