在 Swift 中处理商店营业时间的最佳方式

Best way to work with store hours in Swift

我正在 Swift 中构建一个应用程序,它会从 Firebase 占用商店的营业时间,并希望在我的代码中将其表示为类似“monday.close”的内容以获取 02:30.做这样的事情最好的方法是什么?下图是 Firebase 中的数据。

init(dictionary: [String: Any]) {
    //initialize food item here
    self.name = dictionary["name"] as? String ?? ""
    self.address = dictionary["address"] as? String ?? ""
    self.restaurantLogo = UIImage(named: "")
    self.menuItems = dictionary["menuItems"] as? [Food] ?? []
    self.deliverUberEats = dictionary["uberEatsLink"] as? String ?? ""
    self.deliverDoorDash = dictionary["doordashLink"] as? String ?? ""
    self.deliverGrubhub = dictionary["grubhubLink"] as? String ?? ""
    self.restaurantID = ""
    self.priceRange = dictionary["price"] as? Int ?? 0
    self.hoursOpen = dictionary["hours"] as? [String : [String: String]]
}

struct RestaurantHours {
    var MonOpen: Date?
    var MonClose: Date?
}

我看到你已经有一个字典来存储 Firebase 的开放时间,叫做 hoursOpen

不使用像“monday.open”这样的符号,您有一个选择是将该字典作为您的数据源并使用函数检索小时数,如下所示:

    func restaurantHours(day: String, when: String) -> String {
        let safeWhen = hoursOpen[day.lowercased()] ?? ["open": "closed"]
        let safeTime = safeWhen[when.lowercased()] ?? "closed"
        return safeTime
    }

以下是您的使用方法(但更正 Firebase 或解析您的数据以保持所有工作日小写!):

Text(restaurantHours(day: "Monday", when: "open"))    // 02.30
Text(restaurantHours(day: "MondAy", when: "close"))   // 22.00
Text(restaurantHours(day: "Tuesday", when: "open"))   // 02.30
Text(restaurantHours(day: "frIDAy", when: "clOSe"))   // closed