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教程频道。








