我如何更新字典中的数量值 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.
的变化
我的应用程序中有一个对象数组传递给另一个名为 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.