2011-09-26 83 views
0

我已經從數據庫中獲得了某些事件的日期和升序。如何根據某些特定的順序從數據中排序日期[iphone]

現在,我想需要幾個按鈕..

在這種結構

...

- ########上週##### ----
- ########昨日##### ----

- ########今天##### ----

- ########明天##### ----
- ########下週Week ##### ----

現在,當我按下按鈕推崇.. 在尊重時間的事件應該顯示了..

我的意思是所有的數據應該與今天相比較,所有的數據應該因此而受到短路。 。

任何人都可以給我一個想法或邏輯嗎?

+0

,你用你的數據庫什麼樣的前端?它是核心數據還是SQL,還是其他?您是否正在尋找可以自動確定「上週」時間的日期的代碼,或者您是否在尋找有關創建謂詞的幫助? – Jim

+0

我正在使用SQLite和我不希望他們自動確定,我想排序他們..就像今天是27九月..如果我有日期,說我是從oct3然後它應該自動添加在塊(數組) –

+0

因此,如果我理解正確,你需要計算「下週」這個與任意日期相關的開始和結束日期。然後,當按下「next week」按鈕時,會得到這兩個日期(開始日期和結束日期),然後可以將這些日期設置爲約束條件,執行查詢並顯示結果。這是否說明了它?哪部分需要幫助? – Jim

回答

0

處理日期的最好方法是使用NSDateComponents。 例如,來獲得日期爲明天的使用:

NSCalendar *cal = [NSCalendar currentCalendar]; 
NSDateComponents *comp = [[[NSDateComponents alloc] init] autorelease]; 
[comp setDay:1]; 
NSDate *today = [NSDate date]; 
NSDate *tomorrow = [cal dateByAddingComponents:comp toDate:today options:0]; 

所以,你需要做的是:

  1. 獲取日期所有相關的日期類別
  2. 當你推一個按鈕,構建一個謂詞以僅檢索兩個日期之間的對象。例如,獲取在「明天」類別中的所有對象:

    NSPredicate *pred = [NSPredicate predicateWithFormat:@"date > %@ AND date < %@", tomorrow, nextWeek]; 
    

您可以使用一個小的便利方法得到的日期,通過添加類別的NSDate用這種方法:

@implementation NSDate (Components) 

-(NSDate *) dateByAddingCalendarUnit:(NSCalendarUnit)calendarUnit andCount:(NSInteger) count 
{ 
    NSDateComponents *comp = [[NSDateComponents alloc] init]; 
    switch (calendarUnit) { 
     case NSSecondCalendarUnit: 
      [comp setSecond:count]; 
      break; 
     case NSMinuteCalendarUnit: 
      [comp setMinute:count]; 
      break; 
     case NSHourCalendarUnit: 
      [comp setHour:count]; 
      break; 
     case NSDayCalendarUnit: 
      [comp setDay:count]; 
      break; 
     case NSWeekCalendarUnit: 
      [comp setWeek:count]; 
      break; 
     case NSWeekdayCalendarUnit: 
      [comp setWeekday:count]; 
      break; 
     case NSWeekdayOrdinalCalendarUnit: 
      [comp setWeekdayOrdinal:count]; 
      break; 
     case NSMonthCalendarUnit: 
      [comp setMonth:count]; 
      break; 
     case NSYearCalendarUnit: 
      [comp setYear:count]; 
      break; 
     case NSEraCalendarUnit: 
      [comp setEra:count]; 
      break; 
     default: 
      break; 
    } 

    NSCalendar *cal = [NSCalendar currentCalendar]; 
    NSDate *newDate = [cal dateByAddingComponents:comp toDate:self options:0]; 
    [comp release]; 
    return newDate; 
} 

@end 

,並使用此方法是這樣的:

NSDate *lastWeek = [[NSDate date] dateByAddingCalendarUnit:NSWeekCalendarUnit andCount:-1]; 
相關問題