我如何更新字典中的数量值 ios Swift

how can i update the quantity values in my dictionary ios Swift

我的应用程序中有一个对象数组传递给另一个名为 restaurantViewController 的 VC 值存储在 restMenu 中,现在的问题是每当我滚动 UITableView 时,ItemQuantityCell 值总是被重用到 0,这是我的 restMenu 中的默认值 我如何更新我的 restMenu 中的值,以便我可以将它传递给 checkoutVC,并为我的 ItemQuantityCell 设置正确的值。 我的数据来自哪里的 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

}

根据您的 plist,ItemQuant 始终为零,并且您在 cell.itemQuantityLabel.text 中分配相同的值,因此它始终为零。

接下来,请修改你的代码,不要在Swift.

中使用NSStuff

更新您的 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.

的变化