实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(3)

简介: 实战教程·元宇宙来了,准备好你的电子名片了吗?(八)

CoreData数据持久化框架

接下来我们再学习一种本地数据持久化的方法,也是目前使用最多的数据持久化方法,即使用CoreData数据持久化框架。

首先我们要创建一个Data Model数据模型文件放置在Model文件夹中,命名为CoreData,如下图所示:

创建数据模型

image.png

然后选中CoreData数据模型,点击下面工具栏的Add Entity创建一个实体,命名为Model。并且在Model实体中定义好项目需要的属性,如下图所示:

image.png

由于Model实体我们重新定义了,那么要保证Module模块要选择CurrrentProductModule当前产品的模型,Codegen代码基因要选择Manual/None,不然我们在项目中引用模型的时候可能会找不到我们定义的Model实体,如下图所示:

image.png

创建持久存储区文件

模型准备完成后,下一步我们需要创建一个持久存储区的文件,用于保存数据到Model中,我们在Model文件夹中创建一个新的Swift文件,命名为Persistence,并键入下面的代码:


import CoreData
struct Persistence {
    // 一个单例供我们的整个应用程序使用
    static let shared = Persistence()
    // 存储核心数据
    let container: NSPersistentContainer
    // 用于加载 Core Data 的初始化程序,可以选择使用内存中的存储区。
    init(inMemory: Bool = false) {
        container = NSPersistentContainer(name: "CoreData")
        if inMemory {
            container.persistentStoreDescriptions.first?.url = URL(fileURLWithPath: "/dev/null")
        }
        container.loadPersistentStores { description, error in
            if let error = error {
                fatalError("Error: (error.localizedDescription)")
            }
        }
    }
}

image.png

上述代码中,我们首先引用了CoreData数据持久化框架,然后创建了一个结构体PersistenceController并定义一个常量shared用于初始化。如果是项目创建之初勾选了使用CoreData,则系统会默认创建需要的文件,上述的内容就当作固定的模版使用吧。

访问数据库容器

然后声明一个新的变量container指向NSPersistentContainer数据库容器,声明容器后再给容器进行初始化操作。首先检查内存中是否存在数据库CoreData,如果存在则在需要时进行加载,如果加载失败则输出错误信息。

接下来我们需要在项目中访问数据库容器,打开LinkworldApp文件,创建新的变量persistenceController赋值PersistenceController.shared,并使用环境修改器将数据库数据传递给子视图,如下代码所示:


import SwiftUI
import CoreData
@main
struct LinkworldApp: App {
    let persistenceController = Persistence.shared
    var body: some Scene {
        WindowGroup {
            ContentView()
                .environment(.managedObjectContext, persistenceController.container.viewContext)
        }
    }
}

image.png


目录
打赏
0
0
0
0
75
分享
相关文章
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(5)
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)
80 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(5)
实战教程·元宇宙来了,准备好你的电子名片了吗?(五)(4)
实战教程·元宇宙来了,准备好你的电子名片了吗?(五)
74 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(2)
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)
89 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(2)
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(5)
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)
65 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(5)
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(4)
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)
71 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(4)
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(2)
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)
79 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(2)
实战教程·元宇宙来了,准备好你的电子名片了吗?(二)(2)
实战教程·元宇宙来了,准备好你的电子名片了吗?(二)
71 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(二)(2)
实战教程·元宇宙来了,准备好你的电子名片了吗?(四)(3)
实战教程·元宇宙来了,准备好你的电子名片了吗?(四)
71 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(四)(3)

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等