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

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

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


前提回顾

在前几个章节中,我们已经完成了Linkworld的基本功能,但要达到最小MVP产品还有些距离。完成的功能目前只能在模拟器中使用,缺少本地化存储、网络请求和编辑、删除等功能,这尚未达到最小MVP的要求。

MVP是最小的可用产品,其核心在于最小和可用。“最小”代表着该产品可以反复迭代且迭代周期短,“可用”代表该产品是可以满足用户预期的可以交付的产品,而不仅仅是demo。

因此我们继续深入完善Linkworld这款产品,实现最小MVP产品。

MVVM架构模式:Model-View-ViewModel

通常在SwiftUi开发过程中,开发者们会使用MVVM开发架构模式进行项目搭建。MVVM全称为Model-View-ViewModel,即模型-视图-视图模型。在该架构模式中,我们建立数据模型将数据进行抽象和分离,然后单独创建视图,最后使用ViewModel进行双向绑定链接数据和视图。

在本项目中,我们创建的Model文件便是Model模型部分,而ContentView、NewView、HomePageView是View视图部分,而我们实现的单独抽离ViewModel模型视图部分内容,因此在视图与视图之间,视图与模型之间都建立了多次的变量声明和双向绑定,示例:indexURL。

下面我们来创建ViewModel视图模型并在该项目中使用它,创建一个新的Swift文件,命名为ViewModel,如下图所示:

image.png

为了便于文件管理,我们可以创建对应的文件夹用于存放不同内容的文件,使得文件目录更加清晰明了,如下图所示:

image.png

ViewModel模型视图文件作为链接数据模型和视图之前的“联络官”,需要给视图传递来自于Model的数据,因此我们可以创建一个结构体,遵循ObservableObject协议,ObservableObject协议可以在数据更新时通知视图更新内容。

然后在ViewModel模型视图内,我们使用建立发布器来创建来自Model的数组结构,如下代码所示:

import Foundation
import SwiftUI
class ViewModel:ObservableObject {
    @Published var models = [Model]()
}

image.png


相关文章
|
存储 JSON 缓存
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(1)
实战教程·元宇宙来了,准备好你的电子名片了吗?
94 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(1)
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(3)
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)
47 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(3)
|
存储 安全 容器
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(5)
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)
74 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(5)
|
JSON API 数据格式
实战教程·元宇宙来了,准备好你的电子名片了吗?(五)(4)
实战教程·元宇宙来了,准备好你的电子名片了吗?(五)
71 0
|
存储 XML Swift
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(2)
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)
83 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(2)
|
数据库
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(4)
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)
65 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(4)
|
程序员 人机交互 Swift
实战教程·元宇宙来了,准备好你的电子名片了吗?(六)(3)
实战教程·元宇宙来了,准备好你的电子名片了吗?(六)
82 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(六)(3)
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(1)
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)
57 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(1)
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(2)
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)
70 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(2)
实战教程·元宇宙来了,准备好你的电子名片了吗?(四)(3)
实战教程·元宇宙来了,准备好你的电子名片了吗?(四)
66 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(四)(3)