我正在创建一个待办事项列表应用程序,并希望按优先级对表视图控制器进行排序。 如果任务很重要,我希望它位于待办事项列表的顶部,如果它不重要,我希望它在重要任务下/之后。 我一直在试图弄清楚如何对此进行排序,但一直无法做到。 感谢一些帮助。
class ToDoTableViewController: UITableViewController {
var toDos : [ToDoCoreData] = []
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(_ animated: Bool) {
getToDos()
}
func getToDos() {
if let context = (UIApplication.shared.delegate as? AppDelegate)?.persistentContainer.viewContext{
if let coreDataToDos = try? context.fetch(ToDoCoreData.fetchRequest()) as? [ToDoCoreData] {
if let theToDos = coreDataToDos {
toDos = theToDos
tableView.reloadData()
}
}
}
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath)
let toDo = toDos[indexPath.row]
if let name = toDo.name {
if toDo.important {
cell.textLabel?.text = "❗️" + name
} else {
cell.textLabel?.text = toDo.name
}
}
return cell
}
更新getToDos()
这样的功能:
func getToDos() {
if let context = (UIApplication.shared.delegate as? AppDelegate)?.persistentContainer.viewContext{
let fetchRequest: NSFetchRequest<ToDoCoreData> = ToDoCoreData.fetchRequest()
let descriptors = [NSSortDescriptor(key: "important", ascending: true)] // try true/false
fetchRequest.sortDescriptors = descriptors
if let coreDataToDos = try? context.fetch(fetchRequest) {
if let theToDos = coreDataToDos {
toDos = theToDos
tableView.reloadData()
}
}
}
}