2015-09-22 5 views
1

Нужна помощь в инфраструктуре с сохранением рабочих часов для местоположения на Parse.com, я уже пробовал ее как отдельный класс под названием BusinessHours, где каждая строка имеет указатель на класс Location. Имея минимум 7 строк на каждый день недели на 1 место, подсчет объектов доходит до +10.000хранение рабочего времени в Parse DB

data browser screenshot Class BusinessHours

чем в стрижа я это сделать, чтобы определить, если местоположение открыто в настоящее время

 for hour in hours { 
      if hour.isClosedAllDay { 
      isOpen = "closed".localized 
      }else{ 
      let now = NSDate() 

      if now.hasDayOffset(hour.weekday, closeWeekDay: hour.nextWeekday) { 
       if hour.open != nil && hour.close != nil { 
        let open = now.hourDateFromString(hour.open!, offset: now.dayOpenOffset(hour.weekday, closeWeekDay: hour.nextWeekday)) 
        let close = now.hourDateFromString(hour.close!, offset: now.dayCloseOffset(hour.weekday, closeWeekDay: hour.nextWeekday)) 
        if now.isBetween(open, close: close) { 

         isOpen = "open".localized 
         timeOfBusiness = hour.time! 
         break 
        } 
       } 
      } 
     } 
    } 

Есть ли лучший способ сделать это, чем иметь тысячи строк только для рабочих часов? Я думал о добавлении поля объекта в класс местоположения в течение нескольких часов, но не знаю, правильно ли это сделать.

ответ

0

В зависимости от того, как вы хотите редактировать и изменять детали, а также сложности нескольких периодов открытия в день, я бы подумал не использовать несколько столбцов и строк. Вместо этого вы можете просто сохранить строку JSON в одном столбце, который содержит все необходимые данные.

Очевидно, вы не сможете использовать это для запросов, поэтому, если вам нужно это сделать, вам нужно сохранить что-то большее, как ваше текущее решение.

Если вам не нужны запросы или вам нужны простые запросы, например, «открыто ли это в понедельник», то комбинированное решение, поддерживаемое облачным кодом, поэтому приложение не нуждается в большом количестве знаний о JSON , может работать хорошо. Например, у вас могут быть столбцы для общих часов работы каждый день, а затем детали в JSON, поэтому вы можете получить грубый ответ, запросив запрос, а затем проверить точную информацию перед представлением/использованием результата.

+0

Спасибо за ваш ответ! Нет, мне не нужно его запрашивать, я просто просматриваю часы каждого представленного местоположения, чтобы проверить, открыт ли он. Строка JSON была бы полезна для использования, но не в сочетании с облачным кодом, потому что я создаю свое приложение, чтобы использовать локальное хранилище синтаксического анализа, когда соединение отсутствует. Так значит ли это, что мне понадобится длинная строка JSON со всеми буднями и ее деталями? или есть более простой способ сделать это, учитывая, что я также храню данные о нескольких временах открытия в день. Как бы выглядела такая строка? –

+0

Сокращение, однако, логично для вашего использования. Одиночный столбец со всеми JSON или столбцом в день с конкретным JSON в каждом случае будет работать - решайте на основе того, как вы используете информацию за каждый день – Wain

0

Я закончил тем, что делал это так в поле массива называется businessHours в моем классе Location:

[ 
    {"close":"20:00Z","open":"12:00Z","time":"09:00 - 17:00","isClosedAllDay":false,"nextWeekday":1,"weekday":1}, 
    {"close":"20:00Z","open":"12:00Z","time":"09:00 - 17:00","isClosedAllDay":false,"nextWeekday":2,"weekday":2}, 
    {"close":"20:00Z","open":"12:00Z","time":"09:00 - 17:00","isClosedAllDay":false,"nextWeekday":3,"weekday":3}, 
    {"close":"20:00Z","open":"12:00Z","time":"09:00 - 17:00","isClosedAllDay":false,"nextWeekday":4,"weekday":4}, 
    {"close":"20:00Z","open":"12:00Z","time":"09:00 - 17:00","isClosedAllDay":false,"nextWeekday":5,"weekday":5}, 
    {"close":"20:00Z","open":"12:00Z","time":"09:00 - 17:00","isClosedAllDay":false,"nextWeekday":6,"weekday":6}, 
    {"close":"20:00Z","open":"12:00Z","time":"09:00 - 17:00","isClosedAllDay":false,"nextWeekday":7,"weekday":7} 
] 

, а затем цикл через объекты как NSDictionary.

благодарит Wain!

Смежные вопросы