我创建了公交车票预订应用程序。所以我有Dictionary
和Array
。最近的路径搜索结果保存在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
中删除相同内容吗?这是我的表格视图图像。最佳答案
如果要在[[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/