在 MVC 上混淆了 swift



我有一个处理所有网络请求的类。所以我的困惑是我应该从视图控制器或模型类在哪里调用这个网络请求类。假设我有"用户"模型类,具有属性 id、名称、电话。为了访问登录API,我应该在这个模型类中创建一个函数"loginwithphone"并从viewcontroller调用它,还是应该直接从Viewcontroller调用网络请求类。网络请求类本身是否被视为模型?如果是这样,从视图控制器调用它仍将使我的代码架构成为 MVC。不是吗?

您应该查看定义 MVC 体系结构的观察者模式,以定义通过回调管理请求的任何方法。

MVC 架构的模型层定义了您的 POJOS,因此"loginwithphone"函数应该在控制器类中,例如"logincontroller"。 总而言之,您的网络请求类应被视为资源层内的一个类。并且应该调用控制器类。 希望对您有所帮助!

在 MVC 中,应通过网络类调用网络请求。 最好首先运行一个类或枚举来为你构建请求。之后,您将获得返回给您的模型对象,该对象将存储在视图控制器中,并发送到要填充的所有视图。

题外话:我喜欢MVVM,因为您可以调用另一个包含所有模型和请求的类(viewModel(,而viewController中所拥有的只是等待viewModel完成其请求的视图和回调。

例:

//ViewController
self.viewModel.fetchData()
self.viewModel.dataFetched = {
view.populate(withData: self.viewModel.datas)
}
//ViewModel
var dataFetched: (() -> ())?
var datas: [Data] = []
func fetchData() {
let request = networkManager.buildRequest()
sendRequest( success: { datas in
self.datas = datas
dataFetched?()
})
}

这是对其完成方式的非常模糊的描述。但我喜欢这种方式

最新更新