Представление часовых диапазонов в Objective-C - PullRequest
1 голос
/ 14 апреля 2011

Я пытаюсь создать класс, который представляет часы работы в программе Obj-C.Я думал об использовании NSDatesComponent, но я чувствую, что должен быть более простой способ.У кого-нибудь есть какие-либо советы относительно того, как это сделать?

В Core Data у меня будет сущность shop, которая будет иметь ивар, который является массивом.Этот массив будет содержать семь записей для каждого дня недели, а значение для каждого дня будет hoursOp объектом, который будет представлять диапазон часов.9-5, 10-6 и т. Д. Проблема в том, что я не уверен, как создать мой класс hoursOp для представления диапазона часов.Я думал об использовании NSDateComponents, но не уверен, стоит ли мне беспокоиться.В настоящее время я считаю, что объект hoursOp должен содержать две переменные: время начала и время окончания.

Кроме того, это осложняется возможной потребностью в нескольких объектах hoursOp в записи массива.если shop имеет рабочее время 10-4, то 6-8?Таким образом, вместо массива, содержащего объект hoursOp, это будет двухмерный массив, в котором каждая запись является собственным массивом, содержащим 1 или более объектов hoursOp.Это все немного запутанно, но я думаю, что смогу заставить его работать, как только выясню, как изобразить часы (или сами диапазоны, если у кого-то есть лучшее предложение).

Ответы [ 2 ]

0 голосов
/ 30 апреля 2011

Это то, что я в итоге сделал, используя только 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 объектов, в которых вы устанавливаете только почасовые компоненты - все остальное установлено только на 1 января 1970 года, и это не вызывает никаких проблем.

0 голосов
/ 14 апреля 2011

Трудно сказать «лучший» способ реализовать это, потому что это зависит от того, что вы делаете с данными, но если вы сохранили день недели, время открытия и время закрытия внутри вашего объекта hoursOp, вы можете иметь одномерный массив из hoursOp объектов, которые представляют временные интервалы, когда магазин был открыт.

Вы потеряете отношение один к одному между индексом массива и днемнеделю, что может усложнить выполнение некоторых задач (например, если вы постоянно запрашиваете у этого объекта часы субботнего магазина, вы будете много сканировать весь массив), но в противном случае вы идете по путимассив массивов.

...