Swift:仅从NSUserDefaults中删除第一个对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift:仅从NSUserDefaults中删除第一个对象相关的知识,希望对你有一定的参考价值。

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

现在在TableView我只想展示last 10这是我能完美做的所有但问题是每次结果都保存到UserDefaults所以UserDefaults的大小增加所以我只想删除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()
        }

所以我想从UserDefaults删除相同的可能吗?这是我的表视图图像。

enter image description here

答案

如果你在[[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")
      }
 }

以上是关于Swift:仅从NSUserDefaults中删除第一个对象的主要内容,如果未能解决你的问题,请参考以下文章

Swift:将 NSDictionary 保存到文件中,因为 NSUserDefaults 会变慢

如何在 swift 中保存和读取 NSUserdefaults 中的数组数组?

Swift NSUserDefaults TableView 多个单元格

Swift 将图像(截图)保存到 nsuserdefaults

如何在swift中保存NSUserDefaults中的颜色?

如何使用 NSUserDefaults 在 Swift 中存储自定义类数组?