我如何更新我的字典 ios Swift 中的数量值
Posted
技术标签:
【中文标题】我如何更新我的字典 ios Swift 中的数量值【英文标题】:how can i update the quantity values in my dictionary ios Swift 【发布时间】:2018-05-18 06:17:49 【问题描述】:我的应用程序中有一个对象数组,它传递给另一个名为 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
【问题讨论】:
你为什么在 Swift 中使用NSDictionary
?您在哪里尝试更新数量?您应该首先将 JSON 解析为正确的 struct
或 class
,而不是简单地使用 [String:Any]
。看Codable
我是新手,有人建议我,但现在我已经按照 PPL 的建议更新了我的代码
【参考方案1】:
根据您的 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。如果您向后导航,只需重新加载您的 tableview 数据。它会显示 ItemQuant 的变化。
【讨论】:
代码运行正常但问题依然存在 不,它仍然在做和以前一样的事情。当我滚动 UITableView 时,这些值重用了默认值,我在想,当我在 Quantity 中增加减量时,是否可以用新值替换以前的 ItemQuant 的值。但我无法做到这一点 不,它仍然在做和以前一样的事情。当我滚动 UITableView 时,这些值重用了默认值,我在想,当我在 Quantity 中增加减量时,是否可以用新值替换以前的 ItemQuant 的值。但我无法做到这一点 它将使用默认值,因为您正在像这样分配它, cell.itemQuantityLabel.text = dict["ItemQuant"] as!字符串,它是从字典本身获取值,你应该相应地更新这一行来更新标签值 我怎么能这样做,我正在搜索一个小时,但仍然一无所获。以上是关于我如何更新我的字典 ios Swift 中的数量值的主要内容,如果未能解决你的问题,请参考以下文章