首页 > 解决方案 > Swift:仅从 NSUserDefaults 中删除第一个对象

问题描述

我创建了巴士票预订应用程序。所以我有DictionaryArray。其中最近的 Route 搜索结果保存到NSUserDefaults. 现在我想将该结果打印到一个TableView.

现在,TableView我只想展示last 10这就是我能做到的一切,但问题是每次结果保存到中UserDefaultsUserDefaults都会增加,所以我只想删除Defaults所以每次element remove Repeat While调用我的数组循环时中元素的数量UserDefaults(如果我有 30 个元素,它会运行 20 次,就像这样)。这就是我为 Dictionary 所做的。

    var arrSearch = [[String:Any]]()
    var searchBusVC:SearchBusViewController?

    override func viewDidLoad() {
            super.viewDidLoad()

            if let arr = UserDefault["Search"] {
                arrSearch.append(contentsOf: (arr as! [[String:Any]]))
                repeat{
                 arrSearch.removeFirst()

                }while (arrSearch.count > 10)

                arrSearch.reverse()
            }
                self.tblSearch.reloadData()
        }

所以我想从UserDefaultsIs it possible? 中删除相同的内容?这是我的表视图图像。

在此处输入图像描述

标签: swiftdictionarynsuserdefaults

解决方案


如果您正在保存[[String: Any]]意味着UserDefaults它就像从数组中删除对象的正常方法一样。从数组中删除对象后,将其保存到UserDefaults.

 var recentRecords:[[String: Any]]? {
      get {
        return UserDefaults.standard.array(forKey:"recentRecord")
       }
      set {
        var trimmed: [[String: Any]] = newValue
        // Trim last 10 objects from array
        if newValue.count >= 10 { 
         trimmed = newValue.suffix(10)
        } 

        UserDefaults.standard.set(trimmed, forKey: "recentRecord")
      }
 }

推荐阅读