SwiftUI数据之CoreData的五种获取数据的方式

iCloudEnd  IP属地: 北京
0.737字数 549阅读 2,232

CoreData我们的SwiftUI开发提供基础数据支持,在之前的文章中我们介绍了数据实体的制作。

但是该如何读取数据呢?
实际上有五种不同的方式来获取获取请求。有些比其他的更受欢迎,但是作为SwiftUI开发人员,您可能会在某个时候遇到所有这些。下面就让我们来逐个了解一下吧

// 1
let fetchRequest1 = NSFetchRequest<Venue>()
let entity = NSEntityDescription.entity(forEntityName: "Venue", in: managedContext)!
fetchRequest1.entity = entity
// 2
let fetchRequest2 = NSFetchRequest<Venue>(entityName: "Venue")
// 3
let fetchRequest3: NSFetchRequest<Venue> = Venue.fetchRequest()
// 4
let fetchRequest4 = managedObjectModel.fetchRequestTemplate(forName: "venueFR")
// 5
let fetchRequest5 = managedObjectModel.fetchRequestFromTemplate(
    withName: "venueFR",
    substitutionVariables: ["NAME" : "Vivi Bubble Tea"])

方案一

let fetchRequest1 = NSFetchRequest<Venue>()
let entity = NSEntityDescription.entity(forEntityName: "Venue", in: managedContext)!
fetchRequest1.entity = entity

您将NSFetchRequest实例初始化为通用类型:NSFetchRequest 。至少必须为获取请求指定NSEntityDescription。在这种情况下,实体是Venue。您初始化NSEntityDescription的实例,并使用它来设置获取请求的实体属性

方案二

let fetchRequest2 = NSFetchRequest<Venue>(entityName: "Venue")

在这里,您可以使用NSFetchRequest的便捷初始化程序。它初始化一个新的获取请求,并一步设置其实体属性。您只需要提供一个用于实体名称的字符串,而不是一个完整的NSEntityDescription .

方案三

let fetchRequest3: NSFetchRequest<Venue> = Venue.fetchRequest()

正如第二个示例是第一个示例的收缩一样,第三个示例是第二个示例的收缩。当您生成NSManagedObject子类时,此步骤还将生成一个类方法,该方法返回已设置为获取对应实体类型的NSFetchRequest。这就是Venue.fetchRequest()的来源。该代码位于Venue + CoreDataProperties.swift中

方案四

let fetchRequest4 = managedObjectModel.fetchRequestTemplate(forName: "venueFR")

在第四个示例中,您从NSManagedObjectModel检索获取请求。您可以在Xcode的数据模型编辑器中配置和存储常用的提取请求。

方案五

let fetchRequest5 = managedObjectModel.fetchRequestFromTemplate(
    withName: "venueFR",
    substitutionVariables: ["NAME" : "Vivi Bubble Tea"])

最后一种情况类似于第四种情况。从托管对象模型检索提取请求,但是这一次,您传入了一些额外的变量。这些“替代”变量用于谓词中,以优化您获取的结果。

技术交流

QQ:3365059189
SwiftUI技术交流QQ群:518696470

https://www.jianshu.com/c/7b3e3b671970

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
更多精彩内容,就在简书APP
"小礼物走一走,来简书关注我"
还没有人赞赏,支持一下
总资产1.1W共写了137.6W字获得3,943个赞共2,596个粉丝

被以下专题收入,发现更多相似内容

推荐阅读更多精彩内容