Как добавить кнопку оповещения до подсчета данных? Как сохранить данные, выбранные из индекса действия? - PullRequest
0 голосов
/ 10 ноября 2019

При нажатии кнопки появляется предупреждение. Я выбираю из списка (если доступно сколько данных.) Как я могу сохранить свои данные, выбирая из индекса списка?

Пользовательский интерфейс можно увидеть в здесь

Моя учетная записьУслуги

class AccountServices {
    static let databaseReference = Database.database().reference(withPath: "Accounts").child((Auth.auth().currentUser?.uid)!)

    static var account = Account()

    static func saveChanges() {
        databaseReference.setValue(try! FirebaseEncoder().encode(AccountServices.account))
    }

    static func getAccount() {
        databaseReference.observeSingleEvent(of: .value, andPreviousSiblingKeyWith: { (snapshot, _) in
            account = try! FirebaseDecoder().decode(Account.self, from: snapshot.value!)
        })
    } 
}

Переменная

var product: ProductViewModel?

addButton Tapped

@IBAction func addToCartButtonTapped(_ sender: UIButton) {
    let alert = UIAlertController(title: "Bu ürünü hangi sepetinize eklemek istersiniz ?", message: "", preferredStyle: .actionSheet)
    var indexer = 0
    for cart in AccountServices.account.cart! {
        if cart.product == nil{
            AccountServices.account.cart![indexer].product = [Product]()
        }
        let action = UIAlertAction(title: cart.name , style: .default, handler: { (sender) in


            if let index = alert.actions.firstIndex(where: { $0 === sender }) {
                AccountServices.account.cart?[index].product?.append(self.product) `//Error: Cannot convert value of type 'ProductViewModel?' to expected argument type 'Product'`
                    AccountServices.saveChanges()//TODO...

                }
                let addAlert = UIAlertController(title: "Sepetinize Eklendi.", message: "Ürününüz sepetinize eklendi.", preferredStyle: .alert)
                let okButton = UIAlertAction(title: "Tamam", style: .default, handler: nil)
                addAlert.addAction(okButton)
                self.present(addAlert, animated: true, completion: nil)
            })
            alert.addAction(action)
            indexer += 1
        }

        let cancelaction = UIAlertAction(title: "Vazgeç", style: .cancel, handler: nil)
        alert.addAction(cancelaction)
        present(alert, animated: true, completion: nil)
    }
}
...