gpt4 book ai didi

cocoa-touch - NSDate 作为 NSDictionary 的键

转载 作者:行者123 更新时间:2023-12-03 16:13:15 25 4
gpt4 key购买 nike

是否可以将 NSDate 添加为键,将一些数组添加为 NSDictionary 中的值?

我没有任何将字典写入磁盘的要求 - 存档或取消存档,就像这个人需要它一样:NSDictionary with NSDates as keys

但是,为什么我希望将 NSDate 添加为键,这样我就可以从字典中获取所有键并进行一些计算,例如从某个范围内获取日期。

两个具有相同日期值的对象在创建时是否共享相同的内存?

是否可以将 NSDate 作为 key ?另外,这个假设我还可能面临哪些其他问题?

谢谢

拉杰

编辑:发布我的问题后,我刚刚编写了示例代码:

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,我无法直接检查范围内的日期。我必须执行以下步骤:

  1. 从字典中获取所有 NSString 键数组
  2. 将它们转换回 NSDate 数组
  3. 执行谓词并获取范围内的日期
  4. 再次将这些日期转换回字符串数组
  5. 现在使用此字符串键从字典中获取值!

那么,还有什么更好的办法吗?

最佳答案

是的,NSDate 对象可以用作 NSDictionary 的键 - 任何对象类型都可以用作键,只要它支持 NSCopying协议(protocol)。键通过指针值使用 isEqual:not 进行比较。有关更多详细信息,请参阅 NSDictionary 文档的概述部分。

关于cocoa-touch - NSDate 作为 NSDictionary 的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8786398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com