2017-06-27 4 views
0

Momentan habe ich Probleme, meine Tabellenansichten in der richtigen Reihenfolge zu bestellen. Im Moment ändern sie nicht die Reihenfolge, egal was passiert. Ich bin mir nicht sicher, was ich hinzufügen soll, um das zu beheben.TableViews nach spätester Zeit bestellen

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

Warum sortieren Sie nicht während des CoreData-Abrufs? – Larme

Antwort

1

Es scheint, als ob Ihre notes nicht nach Zeit sortiert ist. Wann immer Sie self.notes = CoreDataHelper.retrieveNotes() erhalten, müssen Sie Ihr Array sortieren. Sie können es wie folgt tun:

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

Hinweis, dass die date variabel in Abhängigkeit von welchem ​​Namen Variable unterscheiden können Sie für Ihre Zeit und Struktur auf Ihrer Note Klasse.

Verwandte Themen