Core Data是一个方便的ORM框架。 创建Single view app工程选择 在 重点来了!先介绍下需要用到的对象! 我们拿到上下文后就可以进行crud的实现了,下面是根据
什么是Core Data
本文主要会讲在Xcode11下Core Data的简单使用,并且以MVC框架的方式展示一个demo。
关于Core Data的原理不多说,边用边说
use core data
Datadb.xcdatamodeld
中创建实体类3. 设置实体后生成创建管理对象子类(重要!)
只要一路next
就行了,最后选择生成的目录。
会得到两个实体文件。
Cocoa Touch class
文件,继承NSObject
作为Service处理表相关的逻辑。并对实体管理子类文件,整理得到如下文件目录结构
获得代理以及上下文
NSManagedObjectContext:
这是连接你的应用程序和object model中间的另外一座桥梁,通过这个上下文,你可以实现增删改查等操作
而一个程序的上下文是在AppDelegate
进行托管的,所以我们要拿到上下文,就要从AppDelegate
中拿到。 //获得当前程序的应用代理 let appDelegate:AppDelegate = UIApplication.shared.delegate as! AppDelegate //通过应用代理对象,获得管理对象上下文 let managedObjectContext = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
Person
实体类实现的简单crud
功能CRUD实现
func saveInfo(name: String, phone: String){ //通过管理对象上下文,插入一条实体数据 let person = NSEntityDescription.insertNewObject(forEntityName: "Person", into: managedObjectContext) as! Person //设置实体的用户名属性的内容 person.name = name //设置实体的密码属性的内容 person.phone = phone appDelegate.saveContext() //在控制台打印输出日志 print("Success to save data.") } func queryByname(name: String) -> Person{ let fetch: NSFetchRequest<Person> = Person.fetchRequest() fetch.predicate = NSPredicate(format: "name=%@", name) let person = try? managedObjectContext.fetch(fetch) if let p = person?.first{ return p } return Person() } func updateByname(name: String, phone: String) { let p = queryByname(name: name) p.phone = phone appDelegate.saveContext() } func deleteByname(name: String) { let p = queryByname(name: name) managedObjectContext.delete(p) appDelegate.saveContext() }
// // ViewController.swift // Datadb // // Created by hannibal lecter on 2020/6/19. // Copyright © 2020 com.cuit.ygl. All rights reserved. // import UIKit class ViewController: UIViewController { @IBOutlet weak var lablePhone: UILabel! @IBOutlet weak var lableName: UILabel! @IBOutlet weak var inputPhone: UITextField! @IBOutlet weak var inputName: UITextField! var personservice = PersonService() override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. //得到项目运行的路径,可以终端进入NSHomeDirectory/Library/Application Support/下查看sqlite文件 print(NSHomeDirectory()) } @IBAction func onsave(_ sender: UIButton) { let name = inputName.text! let phone = inputPhone.text! personservice.saveInfo(name: name, phone: phone) } @IBAction func onupdate(_ sender: UIButton) { personservice.updateByname(name: inputName.text!, phone: inputPhone.text!) let person = personservice.queryByname(name: inputName.text!) lableName.text = person.name lablePhone.text = person.phone } @IBAction func ondel(_ sender: UIButton) { personservice.deleteByname(name: inputName.text!) } @IBAction func onquery(_ sender: UIButton) { let person = personservice.queryByname(name: inputName.text!) lableName.text = person.name lablePhone.text = person.phone } }
代码设计思路和参考的b站视频一致,设计思路和效果可到b站观看。参考
总结
print(NSHomeDirectory())
得到sqllite的路径,然后从终端中对表进行管理
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算