我没有要求将字典写入磁盘 – 归档或取消归档,就像这个人需要它一样: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的键所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)