代表Objective-C中的每小时范围

时间:2011-04-13 20:33:36

标签: objective-c core-data nsdate

我正在尝试创建一个表示Obj-C程序运行小时数的类。我一直在考虑使用NSDatesComponent来做这件事,但我觉得应该有一个更简单的方法。有没有人有关于如何做到这一点的任何提示?

在核心数据中,我会有一个shop实体,它的ivar是一个数组。该数组每周的每一天都有七个条目,每天的值将是一个hoursOp对象,表示一个小时范围。 9-5,10-6等问题是,我不确定如何创建我的hoursOp类来表示一系列小时。我在考虑使用NSDateComponents,但我不确定是否应该打扰。目前,我认为hoursOp对象应该包含两个变量:开始时间和结束时间。

此外,由于数组条目中可能需要多个hoursOp对象,这很复杂 - 如果shop的运行时间为10-4,那么6-8?因此,它不是一个包含hoursOp对象的数组,而是一个二维数组,其中每个条目都是一个包含1个或多个hoursOp对象的数组。这有点令人费解,但我相信我可以让它工作,一旦我弄清楚如何表示时间(或范围本身,如果有人有更好的建议)。

2 个答案:

答案 0 :(得分:0)

很难说“最好”的方式来实现这一点,因为它取决于你对数据做了什么,但是如果你存储了一周中的某一天,那么你的{{1}内的开放时间和结束时间对象,您可以拥有一个hoursOp个对象的一维数组,表示商店打开时的时间间隔。

你失去了数组索引和星期几之间的一对一关系,这可能会使某些任务更难(如果你经常在周六的商店时间查询这个对象,例如,你将要扫描整个阵列,但是否则你将走上拥有数组阵列的道路。

答案 1 :(得分:0)

这就是我最终使用的NSDateNSDateFormatter,其中open是在军事时间格式化的NSString

-(void) setOpeningTimeWithString: (NSString *)open
{
    NSDateFormatter * formatFromInput = [[NSDateFormatter alloc] init];
    [formatFromInput setDateFormat:@"HH:mm"];
    self.openingTime = [formatFromInput dateFromString:open];   
    [formatFromInput release];  
}

外卖的教训是,拥有NSDate个对象,你只设置每小时的组件是完全可以的 - 其他一切只设置为1970年1月1日,并且它不会引起任何问题。