我正在尝试重新初始化与给定单元格关联的所有数据。
这是我删除单元格的函数(cryptosArray是创建单元格的数组):
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
cryptosArray.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .fade)
let userDefaults = UserDefaults.standard
let encodedData : Data = NSKeyedArchiver.archivedData(withRootObject: cryptosArray)
userDefaults.set(encodedData, forKey: "cryptosArray")
userDefaults.synchronize()
}
}
这是一个保存在单元格中存在的textfield
中输入的金额的函数:
func cellAmountEntered(_ walletTableViewCell: WalletTableViewCell, cryptoPrice: String) {
if walletTableViewCell.amountTextField.text == "" {
return
}
let str = walletTableViewCell.amountTextField.text
let formatter = NumberFormatter()
formatter.locale = Locale(identifier: "en_US")
let dNumber = formatter.number(from: str!)
let nDouble = dNumber!
let eNumber = Double(truncating: nDouble)
walletTableViewCell.amountLabel.text = String(format:"%.8f", eNumber)
UserDefaults.standard.set(walletTableViewCell.amountLabel.text, forKey: "\(cryptoPrice)Amount")
walletTableViewCell.amountTextField.text = ""
}
正如您所看到的,我将walletTableViewCell.amountLabel.text
与"\(cryptoPrice)Amount"
保存在UserDefaults文件中,其中\(cryptoPrice)
是与该单元格对应的参数。
删除单元格时,如何删除相应的"\(cryptoPrice)Amount"
键?我无法弄清楚如何将参数传递给commit editingStyle:
..
答案 0 :(得分:1)
基本解决方案是:创建一个cryptoPrices数组。每个单元格都应该有一个值。例如,您可以使用全零来初始化数组(如果它适用于您,我不知道)。然后,如果用户输入金额,则从数组中删除零,并在那里.insert
新值。因此,当您删除时,您可以通过indexPath.row
轻松找到您的密钥。
希望它有所帮助!但请注意:这是一个非常直接的解决方案。
我会这样做:不要将UserDefaults用于此类事情。它不是数据库。最好使用Realm或CoreData。我知道它更难,但有很多教程可以帮助你。祝好运!希望它有所帮助。