2015-10-16 50 views
0

如何根據日期爲NSString格式的密鑰對以下NSSDictionary進行排序?如何在NSSString基礎上對NSString日期鍵進行排序?

Printing description of dictMessageWithDate: 
{ 
    "06:10:2015" =  (
     "<ChatMessage: 0x78e108c0>" 
    ); 
    "25:09:2015" =  (
     "<ChatMessage: 0x78fe8740>", 
     "<ChatMessage: 0x78ff5e50>", 
     "<ChatMessage: 0x78ff58b0>", 
     "<ChatMessage: 0x790205c0>", 
     "<ChatMessage: 0x7901ee00>", 
     "<ChatMessage: 0x79025990>", 
     "<ChatMessage: 0x7901f190>", 
     "<ChatMessage: 0x78faab50>", 
     "<ChatMessage: 0x78ff8ff0>", 
     "<ChatMessage: 0x78ff9860>", 
     "<ChatMessage: 0x78ffa1c0>", 
     "<ChatMessage: 0x78ffa490>", 
     "<ChatMessage: 0x78ff6810>", 
     "<ChatMessage: 0x78f98720>", 
     "<ChatMessage: 0x78f99790>", 
     "<ChatMessage: 0x78f42eb0>" 
    ); 
    "28:09:2015" =  (
     "<ChatMessage: 0x78ffad90>" 
    ); 
    "29:09:2015" =  (
     "<ChatMessage: 0x78ff1de0>", 
     "<ChatMessage: 0x78edad20>", 
     "<ChatMessage: 0x78e7a9d0>" 
    ); 
    "30:09:2015" =  (
     "<ChatMessage: 0x78ec3ac0>" 
    ); 
} 
+3

你不排序的NSDictionary。它是一個KEY/VALUE系統,而不是索引(如NSArray)系統。 – Larme

+0

......或換一種說法;字典*無序*。您將不得不保留一個單獨的鍵值數組,但考慮使用更方便的方法來表示日期,因爲對這些日期的任何操作(即'NSString'到'NSDate'轉換)意味着很多重複處理。 – l00phole

回答

3

我會建議重組:

  1. 將一個寄件日期ChatMessage@property NSDate *dateSent財產。它應該已經有了,因爲這是消息的重要屬性。
  2. 將聊天消息保存在NSArray中,這是訂購的集合類。
  3. 排序的聊天消息是這樣的:

    NSSortDescriptor *dateDescriptor = [NSSortDescriptor 
               sortDescriptorWithKey:@"dateSent" 
                  ascending:YES]; 
    NSArray *sorted = [unsorted 
        sortedArrayUsingDescriptors:@[dateDescriptor]]; 
    
+0

但我需要創建類似whatsapp的日子 –

+0

你仍然可以這樣做;你需要保留一個數組的數組。原則仍然相同,因爲您仍然希望在每個部分中按日期排序聊天消息。 – l00phole

相關問題