在 CoreData Swift 4 中按 Bool 属性对获取结果进行排序



我正在创建一个待办事项列表应用程序,并希望按优先级对表视图控制器进行排序。 如果任务很重要,我希望它位于待办事项列表的顶部,如果它不重要,我希望它在重要任务下/之后。 我一直在试图弄清楚如何对此进行排序,但一直无法做到。 感谢一些帮助。

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()
            }
        }
    }
}

最新更新