我似乎無法找出一段代碼更改的錯誤,導致我的應用程序中出現硬故障,而沒有多少調試線索。NSTimeInterval無法解釋的崩潰
這裏是原來的方法
+ (NSArray *)currentReservations {
NSTimeInterval interval = [[NSDate date] timeIntervalSince1970];
double futureTimeframe = interval + SecondsIn24Hours;
NSArray *reservations = [Reservation findWithSql:@"select * from Reservation where timestamp < ? and timestamp > ?" withParameters:[NSArray arrayWithObjects:[NSNumber numberWithDouble:ceil(futureTimeframe)], [NSNumber numberWithDouble:floor(interval)], nil]];
return reservations;
}
的方法設置了幾個變量,這樣我就可以查詢數據庫,發現現在和24小時後的之間有時間戳的所有記錄。我需要改變方法,從現在到明天(第二天午夜)之間的查詢與時間戳的所有記錄,所以我的代碼更新此基礎上this other stackoverflow question
+ (NSArray *)currentReservations {
NSDate *today = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setDay:1]; // tomorrow
NSDate *tomorrow = [gregorian dateByAddingComponents:components toDate:today options:0];
// [components release]; // dont think we need this release, but it is in the example here: https://stackoverflow.com/questions/181459/is-there-a-better-way-to-find-midnight-tomorrow
NSUInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
components = [gregorian components:unitFlags fromDate:tomorrow];
[components setHour:0];
[components setMinute:0];
NSDate *tomorrowMidnight = [gregorian dateFromComponents:components];
[components release], components=nil;
[gregorian release], gregorian=nil;
NSTimeInterval interval = [today timeIntervalSince1970];
NSTimeInterval tomorrowInterval = [tomorrowMidnight timeIntervalSince1970];
NSArray *reservations = [Reservation findWithSql:@"select * from Reservation where timestamp < ? and timestamp > ?" withParameters:[NSArray arrayWithObjects:[NSNumber numberWithDouble:tomorrowInterval], [NSNumber numberWithDouble:floor(interval)], nil]];
return reservations;
}
然而,當這兩條線:
NSTimeInterval interval = [today timeIntervalSince1970];
NSTimeInterval tomorrowInterval = [tomorrowMidnight timeIntervalSince1970];
包括應用程序崩潰。我已經通過註釋出來,等把範圍縮小到這兩條線..
我在什麼是錯的損失是完全。
你所說的「應用程序崩潰」呢?以什麼方式?你有什麼堆棧跟蹤? – Jim
在模擬器只是一個硬碰撞到主循環 – cpjolicoeur
運行時,你需要得到一個回溯(BT型在調試控制檯),「崩潰」是不會幫助任何人解決您的問題 – jrturton