【问题标题】:storing business hours in Parse DB在 Parse DB 中存储营业时间
【发布时间】:2015-09-22 03:33:48
【问题描述】:

在存储 Parse.com 上某个位置的营业时间方面需要一些基础设施方面的帮助,我已经尝试将它作为一个名为 BusinessHours 的单独类,其中每一行都有一个指向 Location 类的指针。对于 1 个位置,一周中的每一天至少有 7 行,对象数达到 +10.000

我这样做是为了确定该位置现在是否开放

        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
                    }
                }
            }
        }
    }

有没有比仅在营业时间拥有数千行更好的方法?我一直在考虑向位置类添加一个对象字段,但不知道这是否是正确的方法。

【问题讨论】:

    标签: parse-platform


    【解决方案1】:

    根据您要如何编辑和更改详细信息以及每天多个开放时间的复杂性,我会考虑不使用多列和多行。相反,您可以简单地将 JSON 字符串存储在包含所有必需详细信息的单个列中。

    显然您无法使用它进行查询,因此如果您需要这样做,那么您需要保留一些更像您当前解决方案的东西。

    如果您不需要查询,或者您需要简单的查询,例如“它是否在星期一开放”,那么可以使用由云代码支持的组合解决方案,因此应用程序不需要大量的 JSON 知识,可以很好地工作。例如,您可以有每天一般开放时间的列,然后是 JSON 中的详细信息,因此您可以通过查询获得粗略的答案,然后在展示/使用结果之前检查确切的详细信息。

    【讨论】:

    • 感谢您的回复!不,我不需要查询它,我只是循环显示每个位置的时间,以检查它是否打开。 JSON 字符串可以很好地使用,但不能与云代码结合使用,因为我构建我的应用程序以在不存在连接时使用解析本地存储。那么这是否意味着我需要一个包含所有工作日及其详细信息的长 JSON 字符串?或者考虑到我还存储每天多个开放时间的详细信息,是否有更简单的方法。这样的字符串会是什么样子?
    • 剪切它但是对您的使用来说是合乎逻辑的。包含所有 JSON 的单列,或每天包含特定 JSON 的列,任何方式都可以使用 - 根据您每天使用信息的方式来决定
    【解决方案2】:

    我最终在我的 Location 类中的一个名为 businessHours 的数组字段中这样做:

    [
        {"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 循环。

    谢谢韦恩!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-22
      • 2021-03-05
      • 1970-01-01
      相关资源
      最近更新 更多