从一个视图控制器移动到另一个视图控制器时如何保存表视图数据?



从一个视图控制器移动到另一个视图控制器时如何在表视图中保存数据

当我退出应用程序或从视图控制器移动到视图控制器时,我正在尝试让单元格保留,我已经尝试在堆栈上使用多种解决方案,并且我已经尝试使用 viewDidSeem 将单元格数据保留在 CartVC 中,但仍然没有运气

旁注:我的 CartVC 中的单元格是从另一个视图控制器填充的,当在视图控制器中选择一个项目时,它会被传递到 CartVC 中以填充单元格,每次我从一个 VC 移动到另一个 VC(或关闭应用程序(时,CartVC 中的数据都会消失,我如何能够将数据保存在 CartVC 中

class CartViewController: UIViewController, UITableViewDelegate, UITableViewDataSource{
var selectedProduct: Items!
var cart: [Cart] = []
var groupedCartItems: [String: [Cart]] = [:]
var brands: [String] = []
@IBOutlet weak var cartTableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.        
groupedCartItems = Dictionary(grouping: cart, by: {$0.cart.dispensaryName})
dispensarySectionTitle = groupedCartItems.map{$0.key}.sorted()
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(true)
masterCartTableView.reloadData()
}
func numberOfSections(in tableView: UITableView) -> Int {
return brands.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let brand = brands[section]
return groupedCartItems[brand]!.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cartCell = tableView.dequeueReusableCell(withIdentifier: "CartCell") as! CartCell        
let brand = brands[indexPath.section]
let itemsToDisplay = groupedCartItems[brands]![indexPath.row]
cartCell.configure(withCartItems: itemsToDisplay.cart)
return cartCell
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let cartHeader = tableView.dequeueReusableCell(withIdentifier: "CartHeader") as! CartHeader       
let headerTitle = brands[section]
cartHeader.brandName.text = "Store: (headerTitle)"
return cartHeader
}      
}

如果你想保存数据,你可以使用用户默认值

保存在本地

let Defaults = UserDefaults.standard
Defaults.set(Yourvalue, forKey: "yourkey")
Defaults.synchronize()

访问它

let yourvalueuset  =  UserDefaults.standard.string(forKey: "yourkey")

按如下方式保存数组:

let yourArray : [Any] = [] //Change your array type according to your requirement
UserDefaults.standard.setValue(yourArray, forKey: "your_key")

并按如下方式获取数组:

UserDefaults.standard.value(forKey: "your_key") //Get your array type according to you've saved before

最新更新