cocoa-touch – NSDate作为NSDictionary的键

cocoa-touch – NSDate作为NSDictionary的键,第1张

概述是否可以在NSDictionary中添加NSDate作为键和一些数组? 我没有要求将字典写入磁盘 – 归档或取消归档,就像这个人需要它一样:NSDictionary with NSDates as keys 但是,为什么我希望将NSDate作为键特别添加,以便我可以从字典中获取所有键并进行一些计算,例如从一个范围内获取日期. 具有相同日期值的两个对象在创建时是否共享相同的内存? 是否可以将NSDa 是否可以在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的关键比较是否将这两个NSDate对象解释为不同?

另一个编辑:

另外,如果我应该使用NSDateFormatter将NSDate转换为Nsstring,我无法直接检查范围内的日期.我将不得不执行以下步骤:

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

那么,还有更好的方法吗?

解决方法 是的,NSDate对象可以用作NSDictionary的键 – 只要它支持NScopying协议,任何对象类型都可以用作键.使用isEqual:而不是指针值来比较密钥.有关更多详细信息,请参阅NSDictionary文档的OvervIEw部分. 总结

以上是内存溢出为你收集整理的cocoa-touch – NSDate作为NSDictionary的键全部内容,希望文章能够帮你解决cocoa-touch – NSDate作为NSDictionary的键所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1002149.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存