看了很多SwiftUI教程,发现很多教程教授的方法都过于复杂。本文将通过实际制作一个收藏夹APP来带领大家快速掌握CoreData的增删改查功能。




第一步 创建个项目,勾选UserCoreData
具体步骤可以参考下面文章
第二步,创建个实体(Entity)
Entity(实体)是我们存储数据容器,您可以简单将entity理解成excel中的一张表。实体看上去是一张表,但是本身却包含很多属性,通过实体我们可以很多复杂的操作。例如我们可以将我们喜欢的资料或诗歌存储在一个收藏夹子实体中。
CoreData基础知识请参考《SwiftUI CoreData入门概念和基础大全》
下面我们就在xcode中创建个收藏夹实体(bookmark)

为了存储我们的收藏资料,我为bookmark实体设计个四个字段:
- bid 字段,用于唯一辨识每个资料,bid字段类型设置UUID
- title字段,用于存储资料的标题,title字段类型设置为string
- category, 用于存储资料类型,category字段类型设置为string
- brief字段,用于存储资料的详细内容或备注,brief字段类型设置为string
第三步 制作个管理实体的对象Context
Entity实体我们已经制作好了,下面再制作个NSManagedObjectContext(下面简称“context”)。context用于维护和监控object变化的对象,coredata先将entity转化为object,然后交给context进行管理。由于我们经常要使用context,每次写一堆代码比较麻烦,因此我们使用extentsion来将代码进行一下简单的封装。
import UIKit
import CoreData
extension NSManagedObjectContext {
static var current: NSManagedObjectContext {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
return appDelegate.persistentContainer.viewContext
}
}
第四步 完成增删改查功能
1、先创建CDHelper.swift文件用于处理增删改成内容

2、增删该查
(1) 使用CoreData增加数据
//存储资料
static func saveMark(bid:UUID,title:String,category:String,breif:String){
let mark = Bookmark(context: NSManagedObjectContext.current)
mark.bid = UUID()
mark.title = title
mark.category = category
mark.brief = breif
do{
try NSManagedObjectContext.current.save()
} catch let error as NSError {
print(error)
}
}
(2) 删除全部数据
网友评论