1

我有以下結構的字典,集團和值按月,其中關鍵是NSDate的

arrayOne =  { 
    "2015-11-09T00:00:00.000Z" = 1; 
    "2015-11-16T00:00:00.000Z" = 2; 
    "2015-11-23T00:00:00.000Z" = 3; 
    "2015-11-30T00:00:00.000Z" = 4; 
    "2015-12-07T00:00:00.000Z" = 5; 
    "2015-12-14T00:00:00.000Z" = 6; 
    "2015-12-21T00:00:00.000Z" = 7; 
    "2015-12-28T00:00:00.000Z" = 8; 
    "2016-01-04T00:00:00.000Z" = 9; 
    "2016-01-11T00:00:00.000Z" = 1; 
    "2016-01-18T00:00:00.000Z" = 2; 
    "2016-01-25T00:00:00.000Z" = 3; 

}

我想創建另一個字典,值一樣,

arrayTWo = { 

     "November" = 10; 
     "December" = 26; 
     "January" = 15;   
    } 

我試着通過在一個單獨的數組中獲取日期的月份值和一個單獨的數組中的值,然後試圖讓它們在nsmutabledictionary中,但它沒有爲重複鍵a賦值第二有像

arrayTWo = { 

    "November" = 4; 
    "December" = 8; 
    "January" = 3;   
} 

我找不到更好的辦法解決,任何選項都讚賞。謝謝。

+0

你能後的代碼,你目前有沒有工作? – mttrb

+0

基本上它看起來像你需要做'arrayTwo [month] = arrayTwo [month] + value'而不是'arrayTwo [month] = value'。這是僞代碼,因爲您可能需要對「NSNumber」進行一些裝箱/拆箱操作。 – mttrb

+0

您是否想要計算每個月的日期顯示的次數,這就是您想要的最終結果? – dokun1

回答

1

試試這個,它使用NSDateFormatter從日期獲取月份名稱,它根據當前的語言環境進行本地化。如果您的語言環境不是英語,並且您需要取消英語月份名稱,請取消註釋該行以明確設置語言環境。

的邏輯很簡單:

枚舉字典中,如果密鑰(月)存在,添加值,如果不創建關鍵

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];  
formatter.dateFormat = @"MMMM"; 
// formatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]; 
NSMutableDictionary *result = [NSMutableDictionary dictionary]; 
for (NSDate *key in arrayOne.allKeys) { 
    NSString *month = [formatter stringFromDate:key]; 
    if (result[month] == nil) { 
    result[month] = arrayOne[key]; 
    } else { 
    NSInteger value = [result[month] integerValue]; 
    result[month] = @(value + [arrayOne[key] integerValue]); 
    } 
} 
NSLog(@"%@", result); 
+0

感謝您的阻止,我在arrayOne的按鍵上對日期格式化程序轉換進行了一些操作後才能使用,只能獲取月份。再次感謝您節省了大量時間。 –