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

时间:2018-12-18 04:26:47

标签: swift dictionary 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

1 个答案:

答案 0 :(得分: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")
      }
 }