首页 > 解决方案 > 仅从 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
            }
        }

标签: iosswift

解决方案


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

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

现在,您只需要将数组重新写入UserDefaults(就像您之前所做的那样):

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

推荐阅读