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

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

项目属性匹配

紧接着,我们还要改造下Model数据模型中的文件,使其声明的属性和数据库中的属性一一匹配,如下代码所示:


import CoreData
import Foundation
import SwiftUI
public class Model: NSManagedObject,Identifiable {
    @NSManaged public var id: UUID
    @NSManaged public var platformIcon: String
    @NSManaged public var title: String
    @NSManaged public var platformName: String
    @NSManaged public var indexURL: String
    enum CodingKeys: String, CodingKey {
        case platformIcon, title, platformName, indexURL
    }
}

image.png

上述代码中,由于CoreData模型类继承自NSManagedObject协议,每个属性都使用@NSManaged进行声明。

引用数据库

定义好数据模型后,我们来到ContentView视图,我们使用@FetchRequest属性包装器从数据库加载数据,并且注释原来的@StateObject声明的viewModel,如下代码所示:


@FetchRequest(entity: Model.entity(),
              sortDescriptors: [NSSortDescriptor(keyPath: \Model.title, ascending: false)])
var models: FetchedResults<Model>

紧接着我们替换掉原来viewModel模式视图数据遍历的List列表,如下图所示:

image.png

这时可能出现很多报错,这是因为我们替换了原来的viewModel模型视图中的models数据集,因此在很多使用models数据集进行数据传输的地方都会找不到对象而报错。

这没关系,我们一点点修复它。

修改NewView新建视图

我们先来到NewView新建身份卡视图,我们需要声明一个环境变量来管理对象上下文,而且还需要注释原来的viewModel视图模型,如下代码所示:


@Environment(.managedObjectContext) var context

image.png

添加身份卡的方法我们也需要重新设计,并且注释之前的代码,如下代码所示:


// 赋值
let newItem = Model(context: context)
newItem.id = UUID()
newItem.platformIcon = platformIcon
newItem.title = title
newItem.platformName = platformName
newItem.indexURL = indexURL
// 保存
do {
    try context.save()
} catch {
    print(error)
}

image.png

上述代码中,我们声明了一个常量newItem来获得Model数据库实体的数据类型,然后给实体的参数赋值,最后调用save方法保存数据。


相关文章
|
7月前
|
存储 JSON 缓存
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(1)
实战教程·元宇宙来了,准备好你的电子名片了吗?
54 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(1)
|
7月前
|
存储 安全 容器
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(5)
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)
49 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(5)
|
7月前
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(3)
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)
22 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(3)
|
7月前
|
JSON API 数据格式
实战教程·元宇宙来了,准备好你的电子名片了吗?(五)(4)
实战教程·元宇宙来了,准备好你的电子名片了吗?(五)
49 0
|
7月前
|
存储 XML Swift
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(2)
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)
55 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(2)
|
7月前
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(5)
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)
34 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(5)
|
7月前
|
存储 数据库 Swift
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(3)
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)
46 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(3)
|
7月前
|
程序员 人机交互 Swift
实战教程·元宇宙来了,准备好你的电子名片了吗?(六)(3)
实战教程·元宇宙来了,准备好你的电子名片了吗?(六)
50 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(六)(3)
|
7月前
实战教程·元宇宙来了,准备好你的电子名片了吗?(六)(2)
实战教程·元宇宙来了,准备好你的电子名片了吗?(六)
41 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(六)(2)
|
7月前
实战教程·元宇宙来了,准备好你的电子名片了吗?(二)(2)
实战教程·元宇宙来了,准备好你的电子名片了吗?(二)
35 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(二)(2)