在Swift中从UserDefaults中的int数组中仅删除特定的int值

时间:2019-10-15 05:47:12

标签: ios swift

我在书页上做了一个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
            }
        }

1 个答案:

答案 0 :(得分:2)

您已经从此处的数组中删除了该值:

likePageArray.remove(at: likePageArray.index(of: self.bookPage) ?? 0)

现在,您只需要像以前一样将数组重新写回UserDefaults

UserDefaults.standard.set(self.likePageArr, forKey: "\(self.bookNo ?? "")Arr")