2017-06-23 57 views
0

我在Swift 3中使用Xcode制作Notes应用程序。我有一种方法来添加备注,一种保存,删除和标题备注的方法。当我做笔记,他们是从旧列出最新像这样:如何订购表格视图单元格从最新到最旧而不是从最旧到最新

https://i.stack.imgur.com/1K59R.png

这里是我的代码:

// 
// ListNotesTableViewController.swift 
// NotesApp 
// 
// Created by Jozef Porubcin on 6/22/17. 
// Copyright © 2016. All rights reserved. 
// 

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) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "listNotesTableViewCell", for: indexPath) as! ListNotesTableViewCell 
     let row = indexPath.row 
     let note = notes[row] 
     cell.noteTitleLabel.text = note.title 
     cell.noteModificationTimeLabel.text = note.modificationTime?.convertToString() 
     return cell 
    } 
    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() 
    } 

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

问题所在(我想,但我不知道)靠近底部。我希望我能更具体地解决问题的出现点,但是我自己能够解决这个问题。这是我用这种语言的第三天,我很困惑。

不管怎样,我怎样才能改变笔记从最新/最后修改到最旧/先修改的顺序?

编辑:下面是CoreDataHelper代码:

// 
// CoreDataHelper.swift 
// NotesApp 
// 
// Created by Jozef Porubcin on 6/22/17. 
// Copyright © 2017. All rights reserved. 
// 

import Foundation 
import CoreData 
import UIKit 

class CoreDataHelper { 
    static let appDelegate = UIApplication.shared.delegate as! AppDelegate 
    static let persistentContainer = appDelegate.persistentContainer 
    static let managedContext = persistentContainer.viewContext 
    static func newNote() -> Note { 
     let note = NSEntityDescription.insertNewObject(forEntityName: "Note", into: managedContext) as! Note 
     return note 
    } 
    static func saveNote() { 
     do { 
      try managedContext.save() 
     } catch let error as NSError { 
      print("Could not save \(error)") 
     } 
    } 
    static func delete(note: Note) { 
     managedContext.delete(note) 
     saveNote() 
    } 
    static func retrieveNotes() -> [Note] { 
     let fetchRequest = NSFetchRequest<Note>(entityName: "Note") 
     do { 
      let results = try managedContext.fetch(fetchRequest) 
      return results 
     } catch let error as NSError { 
      print("Could not fetch \(error)") 
     } 
     return [] 
    } 
} 
+1

你需要根据需要对你的'notes'数组进行排序。 – rmaddy

+0

可能最好在CoreDataHelper.retrieveNotes方法中对它们进行排序。这是什么样子? –

+0

这是什么意思? (对不起,我完全缺乏知识...:/) – Octavius

回答

0

正如其他的问题都提到不表。你必须按顺序提供你的数据,因为你从coredata中获取数据很容易

static func retrieveNotes() -> [Note] { 
    let fetchRequest = NSFetchRequest<Note>(entityName: "Note") 
    fetchRequest.sortDescriptors = [NSSortDescriptor(key:"date", ascending: true)] //date would be whatever theKeyWhereYouStoreTheDateInYourDatabaseIs 
    do { 
     let results = try managedContext.fetch(fetchRequest) 
     return results 
    } catch let error as NSError { 
     print("Could not fetch \(error)") 
    } 
    return [] 
} 
相关问题