Tôi đang sử dụng NSDateComponentsFormatter trên iOS 8 và tôi đã nhận thấy có lỗi trong việc triển khai phương pháp stringFromTimeInterval:
, nhưng tôi không thể nói chắc chắn.NSDateComponentsFormatter stringFromTimeInterval trả về chuỗi không chính xác trong khoảng thời gian ngắn hơn 1 phút
Đây là cách tôi đã thiết lập các định dạng:
NSDateComponentsFormatter *formatter = [[NSDateComponentsFormatter alloc] init];
formatter.zeroFormattingBehavior = NSDateComponentsFormatterZeroFormattingBehaviorDefault;
formatter.allowedUnits = NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
formatter.unitsStyle = NSDateComponentsFormatterUnitsStylePositional;
Bây giờ khi tôi vượt qua bất cứ điều gì ít hơn 60 giây để phương pháp stringFromTimeInterval:
, lợi nhuận định dạng hoặc 1
hoặc 01
, mà rõ ràng là sai, nó nên trả lại một cái gì đó như 0:XX
.
Điều tôi cũng nhận thấy là bằng cách thay đổi unitsStyle
thành mọi thứ nhưng NSDateComponentsFormatterUnitsStylePositional
phương thức trả về một chuỗi chính xác!
Ví dụ:
Với unitsStyle = NSDateComponentsFormatterUnitsStylePositional
:
(lldb) po [formatter stringFromTimeInterval:12]
= "1"
=> có nên trở lại "00:12" !!
Với unitsStyle = NSDateComponentsFormatterUnitsStyleAbbreviated
:
(lldb) po [formatter stringFromTimeInterval:12]
= "12 s"
=> Đúng!
Điều này cho phép tôi nghĩ rằng đó là lỗi trong việc triển khai API của Apple, hoặc tôi có thiếu gì đó không?
Kiểm tra câu trả lời/công việc bên dưới ... – MiKL
Tôi biết nó không phải là giải pháp, nhưng bạn chỉ có thể đặt giá trị chuỗi nổi từ timeInterval nếu nó thấp hơn 60: nếu (self.timeInterval <60) { stringFromInterval = [NSString stringWithFormat: @ "% 2.0f", self.timeInterval]; } Bạn có cân nhắc hỏi trong Diễn đàn nhà phát triển Apple không? – xarly