Как добавить пользовательский объект в подколлекцию в FireStore с помощью Swift? - PullRequest
0 голосов
/ 25 марта 2019

Когда я пытаюсь добавить пользовательский класс Modifiers в firestore, он падает, потому что он не распознает класс Modifiers. Как это исправить, чтобы я мог отобразить массив объектов модификаторов в подколлекции lineItems? Переполнение стека хочет, чтобы я добавил больше текста. У меня нет больше, чтобы сказать, кроме как я не знаю, как загрузить класс Модификатор объекта в Firestore. Может ли кто-нибудь указать мне правильное направление?

public func uploadTransactionData(_ menuItems: [MenuItem], tip: Int, tax: Int, rewardAmountApplied: Int, totalPaidFromCredit: Int, discountAmount: Int, subTotal: Int, balanceId: String, locationId: String, completion: @escaping ((String?) -> ())) {
    guard let userId = Auth.auth().currentUser?.uid else { completion(nil); return }
    let utilitiesManager = UtilitiesManager()
    let timestamp = utilitiesManager.timestamp()
    let orderRef = Firestore.firestore().collection("order").document()

    for menuItem in menuItems {
        let lineItemsRef = orderRef.collection("line_items").document()
        let lineItemId = lineItemsRef.documentID
        guard let modifierKeys = menuItem.modifierKeys as? [String]?,
           // let modifiers = menuItem.modifiers as? [Modifier]?,
            let toppings = menuItem.toppings as? [String]? else { continue }
        let lineItemParams: [String: Any] = ["base_item_price": menuItem.basePrice,
                                     "category": menuItem.category,
                                     "description": menuItem.description,
                                     "item_id": menuItem.itemId,
                                     "modifierKeys": modifierKeys,
                                   //  "modifiers": modifiers,
                                     "name": menuItem.name,
                                     "photoUrl": menuItem.photoUrl,
                                     "quantity": menuItem.quantity,
                                     "size": menuItem.size,
                                     "sizeAddOnPrice": menuItem.sizeAddOnPrice,
                                     "toppings": toppings,
                                     "toppingsAddOnPrice": menuItem.toppingsAddOnPrice,
                                     "total_mod_price": menuItem.totalModPrice,
                                     "total_price": menuItem.totalPrice,
                                     "unit_price": menuItem.unitPrice
        ]
        lineItemsRef.setData(lineItemParams)
        { err in
            if let e = err {
                print("$-- error uploading transaction data \(e)")
                completion(nil)
            } else {
                completion(nil)
            }
        }
    }

    completion(orderId)
}

Вот класс Модификатора:

struct Modifier: Codable {

    let type: String
    let itemModifierGroupId: String
    let name: String
    let price: Int

    private enum CodingKeys: String, CodingKey {
        case type
        case itemModifierGroupId = "item_modifier_group_id"
        case name
        case price
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...