我创建了公交车票预订应用程序。所以我有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中删除​​相同内容吗?这是我的表格视图图像。

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

最佳答案

如果要在[[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 - Swift:仅从NSUserDefaults中删除第一个对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53826384/

10-12 21:09