我在书页上做了一个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
}
}
答案 0 :(得分:2)
您已经从此处的数组中删除了该值:
likePageArray.remove(at: likePageArray.index(of: self.bookPage) ?? 0)
现在,您只需要像以前一样将数组重新写回UserDefaults
:
UserDefaults.standard.set(self.likePageArr, forKey: "\(self.bookNo ?? "")Arr")