参考代码
实体、属性、关系
- Entity(实体)是CoreData中的类定义。典型的例子是雇员或公司。在关系数据库中,实体对应于一个表。
- Attribute(属性)是附加到特定实体的一条信息。例如,一个Employee实体可以具有该雇员的姓名,职位和薪水的属性。在数据库中,属性对应于表中的特定字段。
- Relationship(关系)是多个实体之间的链接。在CoreData中,两个实体之间的关系称为一对一关系,而一个和许多实体之间的关系称为一对多关系。例如,经理可以与一组雇员建立一对多关系,而单个雇员通常与他的经理具有一对一关系。
存储、读取、更新、删除
NSManagedObject
表示存储在CoereData中的单个对象;您必须使用它来创建,编辑,保存和从Core Data持久性存储中删除。稍后您将看到,NSManagedObject是一种变形器。它可以采用数据模型中任何实体的形式。
1、 存储NSManagedObject
var items: [NSManagedObject] = []
2、读取NSmanagedObject数据
通过NSManagedObject,您可以使用Key-Value来设置name属性。您必须完全按照数据模型中显示的方式拼写Key,否则,您的应用程序将在运行时崩溃。
note.value(forKeyPath: "name") as? String
NSManagedObjectContext
在从CoreData存储中保存或检索任何内容之前,首先需要使用NSManagedObjectContext。您可以将托管对象上下文视为用于处理托管对象的内存“便签本”。
考虑将新的managed object保存到Core Data的过程分为两个步骤:首先,将新的managed object插入managed object context;一旦感到满意,就可以“提交”managed object contenxt中的更改以将其保存到磁盘.
Xcode已经生成了一个managed object context,作为新项目模板的一部分。请记住,只有在开始时选中“Use Core Data”复选框,才会发生这种情况。此默认managed object context作为应用程序委托中NSPersistentContainer的属性存在。要访问它,您首先需要获得对应用程序委托的引用。
NSEntityDescription
NSManagedObject被称为变形体,因为它可以表示任何实体。NSEntityDescription是在运行时将数据模型中的实体定义与NSManagedObject实例链接的部分。
技术交流
NSFetchRequest
顾名思义,NSFetchRequest是负责从Core Data获取数据的类。提取请求既强大又灵活。您可以使用获取请求来获取一组满足所提供条件的对象.
1、读取全部数据
let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Note")
2、过滤内容
let request: NSFetchRequest<Note> = User.fetchRequest()
request.predicate = NSPredicate(format: "name == %@", name)
do {
orders = try self.moc.fetch(request)
} catch let error as NSError {
print(error)
}
设置获取请求的实体属性,使用init(entityName :)对其进行初始化,将获取特定实体的所有对象。这是您在此处获取所有Note实体的操作。另请注意,NSFetchRequest是通用类型。泛型的使用指定了获取请求的预期返回类型,在本例中为NSManagedObject。
let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Note")
我们可以通过制作fetch函数来为了简化调用。
func fetch(){
}
QQ:3365059189
SwiftUI技术交流QQ群:518696470
- 请关注我的专栏icloudend, SwiftUI教程与源码