我制作了一个跟踪锻炼的健身应用程序。训练是一个有NSDate成员的课程。此NSDate成员(date
)用于在图形上显示进度。该应用程序将之前的所有训练提取到[Workout]
数组中,然后按日期对训练进行排序。我以前使用的排序算法是workouts.sort({$0.date.timeIntervalSinceNow > $1.date.timeIntervalSinceNow})
,当我在带有Xcode的iPhone上运行时,它运行得很好。当我将应用程序上传到应用商店并下载时,算法会将所有日期向后排序。
当我之前发布这个问题时,一般的建议是将排序方法更改为:
workouts.sort({abs($0.date.timeIntervalSince1970) > abs($1.date.timeIntervalSince1970)})
我认为这会奏效,但我的应用程序审查今天通过了,但没有——问题完全一样。
我的问题是:当应用程序上传到应用程序商店时,NSDates的排序有何不同?
我从Xcode运行了这个应用程序,它运行得很好。然后我立即从应用商店下载了应用程序,日期都倒了。这怎么会发生?我没有更改时区,我的手机时钟也没有更改。
let yesterday = NSCalendar(calendarIdentifier: NSGregorianCalendar)!.dateWithEra(1, year: 2015, month: 03, day: 21, hour: 19, minute: 0, second: 0, nanosecond: 0)!
let today = NSCalendar(calendarIdentifier: NSGregorianCalendar)!.dateWithEra(1, year: 2015, month: 03, day: 22, hour: 19, minute: 0, second: 0, nanosecond: 0)!
let tomorrowDate = NSCalendar(calendarIdentifier: NSGregorianCalendar)!.dateWithEra(1, year: 2015, month: 03, day: 23, hour: 19, minute: 0, second: 0, nanosecond: 0)!
let daysFromNow2 = NSCalendar(calendarIdentifier: NSGregorianCalendar)!.dateWithEra(1, year: 2015, month: 03, day: 24, hour: 19, minute: 0, second: 0, nanosecond: 0)!
let daysFromNow3 = NSCalendar(calendarIdentifier: NSGregorianCalendar)!.dateWithEra(1, year: 2015, month: 03, day: 25, hour: 19, minute: 0, second: 0, nanosecond: 0)!
var myDates:[NSDate] = [tomorrowDate,daysFromNow3,today,yesterday,daysFromNow2]
var sortedArray = myDates.sorted{$0.compare($1) == NSComparisonResult.OrderedAscending}
println(sortedArray)