2013-12-08 167 views
1

我從服務器獲取對象列表,並將日期作爲屬性。 我收到的單車項目,我需要安排他們在一張桌子,但除以天(部分)。按日期對對象進行分組

我有點麻煩,因爲我可以修復循環中的所有內容。

我所做的是,使用NSDateFormatteris創建一個數組的段數。但從邏輯上講,我不知道如何在循環內創建所有內容。

NSMutableArray *singleSectionArray = [[NSMutableArray alloc] init]; 
NSMutableArray *sectionsArray = [[NSMutableArray alloc] init]; 

[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
    if (!error) { 
     int i = 0; 
     NSDateFormatter *df = [[NSDateFormatter alloc] init]; 

     for (PFObject *object in objects) { 
      [df setDateFormat:@"MMMM d EEEE"]; 
      NSString *dateString = [[NSString alloc] initWithFormat:@"%@",[df stringFromDate:object.createdAt]]; 
      NSArray *dateArray = [dateString componentsSeparatedByString:@" "]; 
      BOOL sectionExist = [sectionsArray containsObject:[dateArray objectAtIndex:1]]; 

      if (sectionExist == 0) { 
       [sectionsArray addObject:[dateArray objectAtIndex:1]]; 
       [singleSectionArray addObject:[NSDictionary dictionaryWithObjectsAndKeys: 
               object.createdAt,@"date", 
               object.objectId,@"objectId", 
               nil]]; 
      } else { 
       //??? 
      } 

     } 

... 

[self.tableView reloadData]; 

我會有這樣的結構

//Section 
NSArray *singleSectionArray = [[NSArray alloc] initWithObjects:@"Object 1", @"Object 2", @"Object 3", nil]; 
NSDictionary * singleSectionDictionary = [NSDictionary dictionaryWithObject: singleSectionArray forKey:@"data"]; 
[dataArray singleSectionDictionary]; 
//Section 
NSArray *singleSectionArray = [[NSArray alloc] initWithObjects:@"Object 4", @"Object 5", nil]; 
NSDictionary * singleSectionDictionary = [NSDictionary dictionaryWithObject: singleSectionArray forKey:@"data"]; 
[dataArray singleSectionDictionary]; 

感謝

回答

5

像這樣將工作:

NSMutableDictionary *sections = [NSMutableDictionary dictionary]; 

for (PFObject *object in objects) { 
    [df setDateFormat:@"MMMM d EEEE"]; 
    NSString *dateString = [df stringFromDate:object.createdAt]; 
    NSMutableArray *sectionArray = sections[dateString]; 
    if (!sectionArray) { 
     sectionArray = [NSMutableArray array]; 
     sections[dateString] = sectionArray; 
    } 

    [sectionArray addObject:@{ @"date" : object.createdAt, @"objectId" : object.objectId }]; 
} 

這就給了你一個字典,其中每個鍵是該部分的標題(日期字符串),每個值都是該部分的對象數組。

現在的技巧是創建一個包含日期鍵的數組,以便數組按照您希望它們出現在表中的方式進行排序。您不能簡單地對日期字符串進行排序,因爲它們將按字母順序顯示而不是按時間順序顯示。

+0

感謝您的回覆,但你能告訴我如何在數組中輸入數據嗎?我無法做到。非常感謝你 – Vins

相關問題