- 继续问UITableView的用法
- Core data存储数据的方法
import UIKit
import CoreData
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
var notes = [NSManagedObject]()
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
// 获取管理对象上下文
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let managedContext = appDelegate.persistentContainer.viewContext
// 创建一个请求来检索“Note”实体中的所有数据
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Note")
do {
let result = try managedContext.fetch(fetchRequest)
notes = result as! [NSManagedObject]
} catch let error as NSError {
print("Could not fetch. \(error), \(error.userInfo)")
}
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return notes.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
let note = notes[indexPath.row]
cell.textLabel?.text = note.value(forKey: "text") as? String
return cell
}
@IBAction func addNote(_ sender: UIBarButtonItem) {
let alert = UIAlertController(title: "New Note", message: "Add a new note", preferredStyle: .alert)
let saveAction = UIAlertAction(title: "Save", style: .default) { [unowned self] action in
guard let textField = alert.textFields?.first, let text = textField.text else {
return
}
self.saveNote(withText: text)
self.tableView.reloadData()
}
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel)
alert.addTextField()
alert.addAction(saveAction)
alert.addAction(cancelAction)
present(alert, animated: true)
}
func saveNote(withText text: String) {
//。。。。。
代码太多,就不全贴了
- 接下来创建笔记类
- 在 UITableView 的数据源方法中,使用笔记数据填充 UITableViewCell。
- 实现编辑功能,允许用户添加、编辑和删除笔记
结合以上的代码稍作调整估计就能运行