Как я могу обновить значения количества в моем словаре IOS Swift
У меня есть массив объектов в моем приложении, который передается другому VC с именем restaurantViewController, значение сохраняется в restMenu, и теперь проблема заключается в том, что всякий раз, когда я прокручиваю UITableView, значение ItemQuantityCell всегда повторно используется до 0, что является значением по умолчанию в моем restMenu. Как я могу обновить значение в моем restMenu, чтобы я мог передать его в checkoutVC с правильным значением для моего ItemQuantityCell. мой список того, откуда поступают данные, выглядит следующим образом
вот мой код
var restMenu = [[String:Any]]()
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! RestaurantItemViewCell
cell.delegate = self as? TableViewCellDelegate
cell.selectionStyle = UITableViewCellSelectionStyle.none
//assign item name to cell
let selectedDictName = restMenu[indexPath.row] as NSDictionary
print("the selected dict ", selectedDictName)
cell.itemNameLabel.text = selectedDictName.value(forKey: "ItemName") as? String
// assign item price to cell
let selectedDictPrice = restMenu[indexPath.row] as NSDictionary
cell.itemPriceLabel.text = "Price: \(selectedDictPrice.value(forKey: "ItemPrice") as! String)"
// assign item quantity to cell
let selectedDictQuant = restMenu[indexPath.row] as NSDictionary
cell.itemQuantityLabel.text = selectedDictQuant.value(forKey: "ItemQuant") as? String
}
1 ответ
Согласно вашему списку, ItemQuant всегда равен нулю, и вы присваиваете одно и то же значение в cell.itemQuantityLabel.text
так что всегда будет ноль.
Далее, пожалуйста, внесите изменения в ваш код, не используйте NSStuff в Swift.
Обновите свой cellForRowAt indexPath
как ниже
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! RestaurantItemViewCell
cell.delegate = self as? TableViewCellDelegate
cell.selectionStyle = UITableViewCellSelectionStyle.none
//assign item name to cell
let dict = restMenu[indexPath.row]
print("the selected dict ", dict)
cell.itemNameLabel.text = dict["ItemName"] as! String
cell.itemPriceLabel.text = dict["ItemPrice"] as! String
cell.itemQuantityLabel.text = dict["ItemQuant"] as! String
return cell
}
Надеюсь, что это работает для вас.
FYI. Выше код не проверен. Это только для справки.
Примечание. Везде, где вы хотите обновить количество товара. Получите индекс, по которому вы хотите обновить количество, и выполните следующие действия.
restMenu[index]["ItemQuant"] = "2" // index is you will get somehow & 2 is just for example you can do what you want there.
ОБНОВИТЬ
Согласно вашему последнему комментарию, это предложение.
Вместо структуры словаря создайте соответствующие классы моделей и проанализируйте список, ваш cellForRowAt indexPath
будет изменен, Ваш ItemQuant должен иметь значение Int. Пройти restMenu
возражать против других ViewController
и обновить его ItemQuant. Если вы вернетесь назад, просто перезагрузите данные таблицы. Он покажет вам изменения в ItemQuant.