У меня есть контроллер представления корзины, который содержит несколько элементов, полученных из 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. '