是否有可能添加NSDate作爲鍵和一些數組,因爲它在NSDictionary中的值?NSDate作爲NSDictionary的鍵
我沒有寫字典中磁盤的任何要求 - 歸檔或解除封存,就像這個傢伙需要它:NSDictionary with NSDates as keys
可是,我爲什麼要添加的NSDate作爲鍵特別是讓我可以取字典中的所有鍵並執行一些計算,例如從一個範圍內獲取日期。
創建時是否有兩個具有相同日期值的對象共享相同的內存?
是否有可能有NSDate作爲關鍵?另外,我可能會面臨這個假設的其他問題?
感謝,
拉吉
編輯: 發佈我的問題後,我只是寫了一個示例代碼:
NSDateComponents *dateComps = [[NSDateComponents alloc] init];
[dateComps setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
[dateComps setDay:1];
[dateComps setMonth:1];
[dateComps setYear:2012];
NSDate *date1 = [[NSCalendar currentCalendar] dateFromComponents:dateComps];
NSDate *date2 = [[NSCalendar currentCalendar] dateFromComponents:dateComps];
NSLog(@"Date 1 = %x, Date 2 = %x", date1, date2);
輸出:
Date 1 = 7945610, Date 2 = bd03610
但不NSDictio的關鍵比較nary將這兩個NSDate對象解釋爲不同?
另一個編輯:
另外,如果我要使用NSDateFormatter的NSDate轉換爲NSString的,我不能直接檢查範圍內的日期。我將必須執行以下步驟:
- 獲取密鑰的所有的NSString數組從字典
- 將其轉換回的NSDate的陣列
- 執行謂詞和範圍內 取日期
- 再轉換回那些日期到字符串數組
- 現在使用這個字符串鍵從字典中獲取值!
那麼,有沒有更好的辦法?
NSString的行爲不像那樣(必然) - 你可以有兩個不同的實例具有相同的內容。爲什麼不用NSDate鍵創建字典並查看會發生什麼? – 2012-01-09 10:16:16
同意,基於你所說的更新了我的問題,並寫下了一個示例程序來證實這一點。但字符串常量共享內存位置。 – 2012-01-09 10:44:08
在格式字符串中使用'%x'只是輸出對象引用的十六進制地址。他們是同一日期的兩個不同的對象! – wcochran 2013-06-11 18:53:38