Как я могу обновить значения количества в моем словаре IOS Swift - PullRequest
0 голосов
/ 18 мая 2018

У меня есть массив объектов в моем приложении, который передается другому VC с именем restaurantViewController, значение хранится в restMenu, и теперь проблема в том, что всякий раз, когда я прокручиваю UITableView, значение ItemQuantityCell всегда повторно используется до 0, что является значением по умолчаниюв моем restMenu, как я могу обновить значение в моем restMenu, чтобы я мог передать его checkoutVC с правильным значением для моего ItemQuantityCell.мой список, из которого поступают данные, выглядит следующим образом

ResturantFile.plist

вот мой код

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 Ответ

0 голосов
/ 18 мая 2018

Согласно вашему списку, 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
}

Надеюсь, это работает для вас.

К вашему сведению.Выше код не проверен.Это только для справки.

Примечание Везде, где вы хотите обновить количество товара Получите индекс, по которому вы хотите обновить количество, и выполните следующие действия:

restMenu[index]["ItemQuant"] = "2" // index is you will get somehow & 2 is just for example you can do what you want there.

ОБНОВЛЕНИЕ

Согласно вашему последнему комментарию, это предложение.

Вместо структуры словаря создайте подходящие классы модели и проанализируйте plist, ваш cellForRowAt indexPath будет изменено, Ваше ItemQuant должно иметь значение Int .Передайте объект restMenu другому ViewController и обновите его ItemQuant .Если вы вернетесь назад, просто перезагрузите данные таблицы.Он покажет вам изменения в ItemQuant .

...