前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >IOS 使用Core Data读写数据库

IOS 使用Core Data读写数据库

作者头像
用户5760343
发布2019-07-08 13:00:59
9710
发布2019-07-08 13:00:59
举报
文章被收录于专栏:sktj

image.png

//项目创建成功后,在项目文件夹中将自动生成一个拥 有.xcdatamodelId扩展名的文件,该文件可以使用图形化的方式编辑数据 模型,在该文件中包含了Entities、Properties、Attributes、Relationships 4 个概念,和关系型数据库有很大的相似性

image.png

//首先点击底部的【Add Entity】按钮,添加一个新的实体,接着将 实体的名称修改为User。然后在【Attributes】设置区,点击+加号图标 为User实体添加一个新的属性userName,并设置Type类型为String。最 后使用相同的方式,为User实体添加第二个属性password。 //完成Entity模型的创建之后,接着来创建一个托管对象类 NSManagedObject。在项目名称文件夹上点击鼠标右键,然后选择菜单 中的【New File……】命令。在弹出的文件模板选择窗口中,依次选择 【Core Data>NSManagedObject subclass】选项,创建一个 NSManagedObject的子类

image.png

//然后点击【Next】按钮,并在接下来的选择待管理的实体页面中选 中【User】实体,从而创建一个名为User的NSManagedObject子类和名 为User+CoreDataProperties.siwft的扩展文件,并在User.swift代码中添加 一行代码@objc(User),因为在Swift类型文件中,需要在暴露给OC使用 的类、属性和方法声明的前面,加上@objc修饰符

image.png

代码语言:javascript
复制
 1 import UIKit
 2 import CoreData
 3
 4 class ViewController:UIViewController {
 5 override func viewDidLoad() {
 6 super.viewDidLoad()
 7 // Do any additional setup after loading the view,
 typically from a nib.
 8
 9 let appDelegate:AppDelegate =
 UIApplication.shared().delegate as!AppDelegate
 10 let managedObjectContext =
 appDelegate.managedObjectContext
 11
 12 let newUser =
 NSEntityDescription.insertNewObject(forEntityName:“User”,
 into: managedObjectContext) as!User
 13
 14 newUser.userName = “John”
 15 newUser.password = “123456”
 16
 17 do{
 18 try managedObjectContext.save()
 19 print(“成功保存数据。”)
 20 }catch
 21 {
 22 print(“保存数据失败。”)
 23 }
 24 }
 25 }
//2
 1 import UIKit
 2 import CoreData
 3
 4 class ViewController:UIViewController {
 5
 6 override func viewDidLoad() {
 7 super.viewDidLoad()
 8 // Do any additional setup after loading the view,
 typically from a nib.
 9
 10 let appDelegate:AppDelegate =
 UIApplication.shared.delegate as!AppDelegate
 11 let managedObjectContext =
 appDelegate.managedObjectContext
 12
 13 let entity:NSEntityDescription?=
 NSEntityDescription.entity(forEntityName:“User”,
 14 in:managedObjectContext)
 15 let request = NSFetchRequest<User>
 (entityName:“User”)
 16 request.fetchOffset = 0
 17 request.fetchLimit = 10
 18 request.entity = entity
 19
 20 let predicate = NSPredicate(format:“userName=
 ‘John’ “, ””)
 21 request.predicate = predicate
 22
 23 do{
 24 let results:[AnyObject]?= try
 managedObjectContext.fetch(request)
 25
 26 for user:User in results as![User]{
 27 print(“userName=(user.userName!)”)
 28 print(“password=(user.password!)”)
 29 }
 30 }
 31 catch{
 32 print(“获取数据失败。”)
 33 }
 34 }
 35 }
代码语言:javascript
复制
//修改
 1 import UIKit
 2 import CoreData
 3
 4 class ViewController:UIViewController {
 5 override func viewDidLoad() {
 6 super.viewDidLoad()
 7 // Do any additional setup after loading the view,
 typically from a nib.
 8 let appDelegate:AppDelegate =
 UIApplication.shared.delegate as!AppDelegate
 9 let managedObjectContext =
 appDelegate.managedObjectContext
 10
 11 let entity:NSEntityDescription?=
 NSEntityDescription.entity(forEntityName:“User”,
 12 in:managedObjectContext)
 13 let request = NSFetchRequest<User>
 (entityName:“User”)
 14 request.fetchOffset = 0
 15 request.fetchLimit = 10
 16 request.entity = entity
 17
 18 let predicate = NSPredicate(format:“userName=
 ‘Jerry’ “, ””)
 19 request.predicate = predicate
 20
 21 do{
 22 let results:[AnyObject]?= try
 managedObjectContext.fetch(request)
 23 for user:User in results as![User]{
 24 user.userName = “Peter”
 25 }
 26 try managedObjectContext.save()
 27
 28 request.predicate = nil
 29 let newResults:[AnyObject]?= try
 managedObjectContext.fetch(request)
 30
 31 for user:User in newResults as![User]{
 32 print(“userName:(user.userName)”)
 33 print(“password:(user.password)”)
 34 }
 35 }
 36 catch{
 37 print(“获取数据失败。”)
 38 }
 39 }
 40 }
代码语言:javascript
复制
//删除
 23 for user:User in results as![User]{
 24 managedObjectContext.delete(user)
 25 }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.06.10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
关系型数据库
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档