Всем добрый день) Друзья, у меня есть таблица, данные в которой я сохраняю с помощью core data, ещё в этой таблице есть сортировка, которую я так же реализую с помощью cd, но сам тип сортировки нужно сохранять не в core data, а в user defaults. Я, вроде бы, все сохраняю, но при перезапуске приложения тип сортировки слетает. Если я правильно понимаю, сортировку я сохранять сохраняю, но не читаю ее при запуске приложения. Предполагаю, что ответ лежит на поверхности, но дойти до него не получается. Мой код:
class ViewController: UIViewController {
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
let defaults = UserDefaults.standard
var dataForCells: [Model] = []
let identifier = "Cell"
private lazy var tableView: UITableView = {
let tableView = UITableView()
tableView.rowHeight = 104
return tableView
}()
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(Cell.self, forCellReuseIdentifier: identifier)
tableView.dataSource = self
tableView.delegate = self
navigationItem.title = "Треки"
navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addButtonPressed))
navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Сортировка", menu: sorting())
navigationController?.navigationBar.prefersLargeTitles = true
setupViews()
setupConstraints()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
fetch()
tableView.reloadData()
}
private func fetch() {
let request: NSFetchRequest<Model> = Model.fetchRequest()
do
{
dataForCells = try context.fetch(request)
}
catch {
print(error)
}
}
private func setupViews() {
view.addSubview(tableView)
}
@objc private func addButtonPressed() {
navigationController?.pushViewController(SecondViewController(), animated: true)
}
private func sorting() -> UIMenu {
let menu = UIMenu(title: "", children: [
UIAction(title: "От A-Z") { action in
let request: NSFetchRequest<Model> = Model.fetchRequest()
let sort = NSSortDescriptor(key: "song", ascending: true)
request.sortDescriptors = [sort]
do {
self.dataForCells = try self.context.fetch(request)
self.defaults.set(1, forKey: "SortType")
}
catch {
print(error)
}
self.tableView.reloadData()
},
UIAction(title: "От Z-A") { action in
let request: NSFetchRequest<Model> = Model.fetchRequest()
let sort = NSSortDescriptor(key: "song", ascending: false)
request.sortDescriptors = [sort]
do {
self.dataForCells = try self.context.fetch(request)
self.defaults.set(2, forKey: "SortType")
}
catch {
print(error)
}
self.tableView.reloadData()
},
UIAction(title: "По исполнителю") { action in
let request: NSFetchRequest<Model> = Model.fetchRequest()
let sort = NSSortDescriptor(key: "singer", ascending: true)
request.sortDescriptors = [sort]
do {
self.dataForCells = try self.context.fetch(request)
self.defaults.set(3, forKey: "SortType")
}
catch {
print(error)
}
self.tableView.reloadData()
}
])
return menu
}
private func setupConstraints() {
tableView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
}
}