2010-10-20 71 views
0

該主題含糊不清,因爲我不確定如何在一個句子中表達我想要的內容。添加缺失的對象以創建有序集合

這裏有:

我有NSArray的NSDictionaries。每個NSDictionary表示日曆年的一天。每個NSDictionary都有一個鍵值「NSDate」的「date」。數組中應該有365個NSDictionary項目。字典是由我無法控制的服務器創建的,有時缺少多達100天。

我需要確保數組有365個字典,每個比下一個晚一天。

我目前按日期對數組進行排序,遍歷它,將NSDictionaries從當前數組複製到新數組。這樣做的同時,我將當前Dictionary的日期值與下一個字典的日期值進行比較。如果兩個日期之間有一天以上的時間,我會向新陣列添加足夠多的新字典來彌補那些缺失的日子(並相應地設置他們的日期),然後繼續。

因爲日期應該是有序的,所以我想知道在框架或語言中是否還沒有機制可以用來說「這裏是一個數組,並且這個keypath應該是連續的。缺少的元素,以及可以用來初始化它們的塊或方法「。

關於我的方法的一些事情只是感覺實施得不好,所以我轉向你。思考?

謝謝。

+0

這應該是好的,恕我直言。 – Altealice 2010-10-20 05:40:39

回答

1

你這樣做的方式聽起來完全理智,我的知識沒有什麼可以在基本框架中自動完成的。

0

此代碼將對它們進行排序。

NSArray *dates; // wherever you get this... 
NSArray *sortedDates = [dates sortedArrayUsingComparator:^(id obj1, id obj2) 
    { 
    return [[obj1 valueForKey:@"date"] compare:[obj2 valueForKey:@"date"]]; 
    }]; 

至於創建缺少的條目,你必須自己做。

+0

感謝您的比較示例代碼。 – Woodster 2010-10-20 18:49:29

0

你並不需要做的排序:

  1. 365(或366)佔位符字典創建一個數組(你都不可能使用同一個所有插槽,或使用NSNull)
  2. 遍歷傳入的數組,並找出每個字典的用途。將每個字典放在陣列中的合適插槽中。
+0

謝謝。這是一個可以肯定考慮的技術。 – Woodster 2010-10-20 13:11:03