这是在MVVM中两个viewcontroller之间传递数据和调用api的正确方式



我是MVVM的新手,我开始使用它开发应用程序。我不知道如何在以下场景中正确使用MVVM。我有一个表视图的ViewController (ViewController A)。每个表视图单元格都与一个学生模型相关联。学生模型是这样的。

struct Student {
let id: Int
let name: String
let age: Int
}

现在,当用户单击其中一个单元格时,我需要调用另一个API来获取特定学生订阅的主题。一旦我得到响应,我需要导航到viewcontroller B并在表视图中显示它。

我可以看到两个选项来做这个。

选项1

当用户选择一个表视图单元格时,将student模型作为一个依赖传递给ViewController B。ViewController B显示一个加载屏幕,并通过传递学生id来调用API来加载科目。然后,一旦获得成功的响应,它就会在表视图中显示主题。如果有任何失败,将有一个警告消息显示在视图控制器B,用户需要回到视图控制器A再试一次或选择一个不同的学生。

选项2

当用户选择一个表格视图单元格时,viewcontroller a自己调用主题API。失败将返回一个错误消息,而ViewController A将显示一个警告消息。用户可以使用相同的学生再次尝试,也可以选择不同的学生。成功的响应将返回一个Subject模型数组。ViewController A将主题模型数组传递给ViewController B。ViewController B将在屏幕上显示一个包含所有主题的表视图。

当涉及到用户体验选项2似乎是正确的,但然后ViewController A必须做两个API调用来加载学生和科目。它还引用了两个视图模型Student和Subjects。

我不确定哪一种是正确的方法,当它涉及到MVVM,同时有更好的用户体验。非常感谢您的建议。

我认为你的选项1是正确的方式,在我的经验中显示所有数据,从数据库中选择所有数据列表,然后当想要选择一个/选择细节只有一行时,可以调用其他方法/函数/API从数据库中接收单个唯一id

相关内容

最新更新