Swift利用CoreData实现一个通讯录存储详解

2020-01-09 00:01:17王振洲

3.3 查询本地数据

咦?在最开始的不是说一个基本的 Core Data 栈由四个主要部分组成嘛?怎么没有看到呐?

来来来,这就是最开始我们使用Xcode创建默认带数据库的工程的原因。使用了这个选项,会自动的在AppDelegate中生成相应的代码。确实简化了咱们第一次学习的成本,但是就像没人会把所有代码都写在Controller里面一样,在APPDelegate也不会写这些东西。


 override func viewDidAppear(_ animated: Bool) {
 super.viewDidAppear(animated)
 // 步骤一:获取总代理和托管对象总管
 let appDelegate = UIApplication.shared.delegate as! AppDelegate
 
 let managedObectContext = appDelegate.persistentContainer.viewContext
 
// 步骤二:建立一个获取的请求
 let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Person")
 
// 步骤三:执行请求
 do {
  let fetchedResults = try managedObectContext.fetch(fetchRequest) as? [NSManagedObject]
  if let results = fetchedResults {
  people = results
  
  tableView.reloadData()
  }
  
 } catch {
  fatalError("获取失败")
 }
 }

3.4 插入并保存数据至本地数据库


private func saveName(text: String) {
 // 步骤一:获取总代理和托管对象总管
 let appDelegate = UIApplication.shared.delegate as! AppDelegate
 
 let managedObectContext = appDelegate.persistentContainer.viewContext
 
 // 步骤二:建立一个entity
 let entity = NSEntityDescription.entity(forEntityName: "Person", in: managedObectContext)
 
 let person = NSManagedObject(entity: entity!, insertInto: managedObectContext)
 
 // 步骤三:保存文本框中的值到person
 person.setValue(text, forKey: "name")
 
 // 步骤四:保存entity到托管对象中。如果保存失败,进行处理
 do {
 try managedObectContext.save()
 } catch {
 fatalError("无法保存")
 }
 
 // 步骤五:保存到数组中,更新UI
 people.append(person)
}

所有的源代码在这里

github地址:https://www.easck.com/p>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对ASPKU的支持。


注:相关教程知识阅读请移步到swift教程频道。