ios - 仅从 Swift 中 UserDefaults 的 int 数组中删除特定的 int 值
问题描述
我like
在书页上做了一个按钮。当我按下like
按钮时,按钮的图像会发生变化。页码存储在 UserDefaults 中的 Int 数组中。
但是当我取消喜欢时,应该删除存储在 Int Array UserDefaults 中的页码。
如何在 UserDefaults 中删除 Int 数组中的特定数字?
@objc func likeBtnClicked(_ sender: UIButton) {
DispatchQueue.main.async {
if sender.isSelected == false {
sender.setBackgroundImage(UIImage(named: "fill-heart"), for: .normal)
UserDefaults.standard.set(self.bookPage, forKey: "\(self.bookNo ?? "")")
self.likePageArr.append(UserDefaults.standard.object(forKey: "\(self.bookNo ?? "")") as! Int)
var likePageArray = UserDefaults.standard.array(forKey: "\(self.bookNo ?? "")Arr") as? [Int] ?? [Int]()
UserDefaults.standard.set(self.likePageArr, forKey: "\(self.bookNo ?? "")Arr")
sender.isSelected = true
} else if sender.isSelected == true {
sender.setBackgroundImage(UIImage(named: "none-heart"), for: .normal)
UserDefaults.standard.removeObject(forKey: "\(self.bookNo ?? "")")
var likePageArray = UserDefaults.standard.array(forKey: "\(self.bookNo ?? "")Arr") as? [Int] ?? [Int]()
likePageArray.remove(at: likePageArray.index(of: self.bookPage) ?? 0)
//i need delete self.bookPage in likePageArray
sender.isSelected = false
}
}
解决方案
您已经在此处从数组中删除了该值:
likePageArray.remove(at: likePageArray.index(of: self.bookPage) ?? 0)
现在,您只需要将数组重新写入UserDefaults
(就像您之前所做的那样):
UserDefaults.standard.set(self.likePageArr, forKey: "\(self.bookNo ?? "")Arr")
推荐阅读
- javascript - 滚动到顶部到原始滚动状态
- jquery - 调用所有类方法或函数的 JQuery 侦听器
- xamarin.android - 图像的长度和宽度是两倍,为什么?
- java - Java Flight Recorder - 没有活动对象
- graph - 点符号等级未将项目放置在同一水平线/平面上
- youtube-api - YouTube v3 API 搜索 etag 不一致
- android - 附近连接的最大连接设备数 - 说明
- php - Divi / Woocommerce 上带有 AJAX 和图像按钮的产品类别过滤器
- sql-server - 正确的大查询在 ASP Classic 中不起作用?
- azure - 通过 terraform 创建的 AKS 中 Windows 节点池的默认管理员密码是什么