записывает подвиги из coredata и отправляет их на базу данных в Swift - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть контроллер представления корзины, который содержит несколько элементов, полученных из coredata, когда клиент нажимает, чтобы оформить заказ, и переходит к контроллеру представления счета, который отправляет данные о товарах в firebase после нажатия пользователем кнопки placeOrder.

This код для перемещения элементов из первого контроллера представления во второй:

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let destination = segue.destination as! CheckoutViewController
    destination.arrayItem = arrayProduct
}

Теперь во втором контроллере представления я получаю запись из coredata:

  func fetchRecordCartFromDatabase(){
                let context = objAppDelegate.persistentContainer.viewContext
                let fetchRequest = NSFetchRequest<NSFetchRequestResult>.init(entityName: "Cart")

                do{
                    result = try context.fetch(fetchRequest) as! [NSManagedObject]
                    for data in result{

                        let obj = userNSObj()
                        obj.productID = data.value(forKey: "id") as! String
                        obj.uid = data.value(forKey: "uid") as! String
                        obj.productName = data.value(forKey: "name") as! String
                        obj.productPrice = data.value(forKey: "price") as! Double
                        arrayCart.append(obj)

                    }
                }catch{
                     print("Failed")
                }
            }

Есть ли способ сохранить данные в фоновом режиме и когда пользователь размещает свой заказ, массив присваивает каждому продавцу, что этот покупатель покупает у него конкретный товар без извлечения данных, потому что я уже переместил данные с использованием массива?

Здесь я пытаюсь отправьте данные в firebase, чтобы потом можно было извлечь их как историю.

  func sendDataToFirebase(){
    let invoiceID = self.ref.childByAutoId().key
    let userID = Auth.auth().currentUser?.uid

    let invoice = [
        "invoiceID" : invoiceID,
         "uid" : userID,

        ] as [String : Any]
    self.ref.child("invoice").child(id).child("Items").setValue(arrayCart)

}

Я получил сообщение об ошибке, которое говорит (setValue :) Невозможно сохранить объект типа _erfa.userNSObj в 0. Может хранить только объекты типа NSNumber, NSString, NSDictionary и NSArray. '

...