是否可以在NSDictionary中添加NSDate作为键和一些数组?
我没有要求将字典写入磁盘 - 归档或取消归档,就像这个人需要它一样: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
但NSDictionary的关键比较是否将这2个NSDate对象解释为不同?
另一个编辑:
另外,如果我应该使用NSDateFormatter将NSDate转换为NSString,我无法直接检查范围内的日期。我将不得不执行以下步骤:
那么,还有更好的方法吗?
答案 0 :(得分:7)
是的,NSDate
个对象可以用作NSDictionary
的密钥 - 只要它支持NSCopying
协议,任何对象类型都可以用作密钥。密钥使用isEqual:
和非按指针值进行比较。有关详细信息,请参阅NSDictionary
文档的“概述”部分。