按最新时间订购TableViews

时间:2017-06-27 20:43:41

标签: ios arrays swift uitableview sorting

目前我无法按正确的顺序订购我的表格视图。截至目前,无论如何,他们都不会改变秩序。我不确定要添加什么来解决这个问题。

import UIKit

class ListNotesTableViewController: UITableViewController {
    var notes = [Note](){
        didSet{
            tableView.reloadData();
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        notes = CoreDataHelper.retrieveNotes()
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return notes.count;
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath : IndexPath) ->ListNotesTableViewCell{
        let cell = tableView.dequeueReusableCell(withIdentifier: "listNotesTableViewCell", for: indexPath) as! ListNotesTableViewCell

        let row = indexPath.row
        let note = notes[row]
        cell.noteTitleLabel.text = note.title
        cell.notePreview.text = note.content;
        cell.noteModificationTimeLabel.text = note.modificationTime?.convertToString()
        return cell
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let identifier = segue.identifier {
            if identifier == "displayNote" {
                print("Table view cell tapped")

                let indexPath =  tableView.indexPathForSelectedRow!
                let note = notes[indexPath.row]
                let displayNoteViewController = segue.destination as! DisplayNoteViewController
                displayNoteViewController.note = note

            } else if identifier == "addNote" {
                print("+ button tapped")
            }
        }
    }

    override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
        if editingStyle == .delete {

            CoreDataHelper.delete(note: notes[indexPath.row])

            notes = CoreDataHelper.retrieveNotes()
        }
    }

    @IBAction func unwindToListNotesViewController(_ segue: UIStoryboardSegue){
        self.notes = CoreDataHelper.retrieveNotes()
    }
}

1 个答案:

答案 0 :(得分:1)

您的notes似乎没有按时间排序。每当你得到self.notes = CoreDataHelper.retrieveNotes()时,你需要对数组进行排序。你可以这样做:

self.notes.sorted(by: { $0.date < $1.date })

注意date变量可能会有所不同,具体取决于您在Note课程中的时间和结构的变量名称。