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

问题描述 投票:0回答:1

我创建了巴士票预订应用程序。所以我有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

swift dictionary nsuserdefaults
1个回答
0
投票

如果你在[[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")
      }
 }
© www.soinside.com 2019 - 2024. All rights reserved.