You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

删除UITableViewCell时如何清除对应的NSUserDefaults数据

解决UITableViewCell删除时清除对应UserDefaults数据的问题

其实很简单,你只需要在删除单元格的逻辑里,先拿到对应单元格的cryptoPrice,然后用这个值构造出之前存数据的键,再从UserDefaults里删掉这个键值对就行。具体步骤如下:

  1. 在删除函数中获取对应crypto的price值
    找到你的tableView(_:commit:forRowAt:)方法,在删除数组元素之前,先通过indexPath拿到要删除的那个crypto对象,提取出它的cryptoPrice——这个值必须和你保存数据时用的完全一致,不然会找不到对应的键哦。

  2. 构造要删除的UserDefaults键并移除
    用拿到的cryptoPrice拼接成你之前用的键"\(cryptoPrice)Amount",然后调用UserDefaults.standard.removeObject(forKey:)方法删掉这个键值对,必要的话可以调用synchronize()确保修改立即生效(iOS10+之后这个方法不是必须,但某些场景下能避免延迟)。

  3. 正常执行删除数组元素和刷新表格的逻辑

给你个完整的代码示例(你可以根据自己的实际代码调整):

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {
        // 第一步:获取要删除的crypto对应的price
        let targetCrypto = cryptosArray[indexPath.row]
        let cryptoPrice = targetCrypto.price // 这里根据你的模型属性调整,确保和保存时的取值一致
        
        // 第二步:构造键并移除UserDefaults中的数据
        let amountKey = "\(cryptoPrice)Amount"
        UserDefaults.standard.removeObject(forKey: amountKey)
        UserDefaults.standard.synchronize() // 可选,按需添加
        
        // 第三步:删除数组元素并刷新表格
        cryptosArray.remove(at: indexPath.row)
        tableView.deleteRows(at: [indexPath], with: .fade)
    }
}

另外提个小建议:如果你的crypto对象有唯一不变的标识(比如id),用id来作为键的一部分会比price更可靠——毕竟price可能会随着行情变动,万一之后price变了,你再想找对应的键就找不到啦。不过如果你的业务逻辑里price是唯一且固定的,那用price完全没问题。

内容的提问来源于stack exchange,提问作者Wizzardzz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 06:53:24