当应用程序在应用商店中时,NSDates的存储方式不同,但在Xcode中调试时可以完美工作



我制作了一个跟踪锻炼的健身应用程序。训练是一个有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)

相关内容