我正在尝试创建一个表示Obj-C程序运行小时数的类。我一直在考虑使用NSDatesComponent
来做这件事,但我觉得应该有一个更简单的方法。有没有人有关于如何做到这一点的任何提示?
在核心数据中,我会有一个shop
实体,它的ivar是一个数组。该数组每周的每一天都有七个条目,每天的值将是一个hoursOp
对象,表示一个小时范围。 9-5,10-6等问题是,我不确定如何创建我的hoursOp
类来表示一系列小时。我在考虑使用NSDateComponents
,但我不确定是否应该打扰。目前,我认为hoursOp
对象应该包含两个变量:开始时间和结束时间。
此外,由于数组条目中可能需要多个hoursOp
对象,这很复杂 - 如果shop
的运行时间为10-4,那么6-8?因此,它不是一个包含hoursOp
对象的数组,而是一个二维数组,其中每个条目都是一个包含1个或多个hoursOp
对象的数组。这有点令人费解,但我相信我可以让它工作,一旦我弄清楚如何表示时间(或范围本身,如果有人有更好的建议)。
答案 0 :(得分:0)
很难说“最好”的方式来实现这一点,因为它取决于你对数据做了什么,但是如果你存储了一周中的某一天,那么你的{{1}内的开放时间和结束时间对象,您可以拥有一个hoursOp
个对象的一维数组,表示商店打开时的时间间隔。
你失去了数组索引和星期几之间的一对一关系,这可能会使某些任务更难(如果你经常在周六的商店时间查询这个对象,例如,你将要扫描整个阵列,但是否则你将走上拥有数组阵列的道路。
答案 1 :(得分:0)
这就是我最终使用的NSDate
和NSDateFormatter
,其中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日,并且它不会引起任何问题。