swift - iOS JSON 的设计模式
问题描述
我即将在 Swift 中构建一个与此 API 通信的 iOS 应用程序,我想在构建之前就设计模式提出建议。我真的很想在这里学习如何创建一个干净、一流的 MCV 设计,所以欢迎任何提示。
我编写了一个 REST API,可以通过 HTTP 对一堆资源进行 CRUD 操作,我们称它们为“项目”。项目有几个属性,如“名称”、“类型”等。有一些关系(例如,“项目”被分配给“用户”)。数据以 JSON 形式呈现。
我正在努力解决的关键问题之一是在哪里存放 JSON 下载和解析的逻辑。你把它放在 ViewController 中吗?或者创建一个单独的控制器类?我想为多个资源(例如“项目”和“用户”)重新使用 JSON 代码。我真的需要一个 ItemManager 和一个 ItemViewController 吗?
我目前的想法:
- (M) Item - 一个可解码的 JSON 结构,它遵循 API 上资源的确切结构
- (M) 用户 - 同上
- (C) JSONController - 一个获取 URL 和预期类类型的类,然后去检索响应并返回该类的实例
- (C) ItemManager - 一个跟踪所有项目的类(通过启动一组 Item 类的实例)并在需要时使用 JSON 控制器进行更新
- (C) UserManager - 同上
- (C) ItemViewController - 从 ItemManager 中检索项目并为视图控制器准备它们;还协调按钮动作等
- (C) UserViewController - 同上
- (V) ItemView - 以表格形式显示项目的视图
- (五)UserView——同上
非常感谢和亲切的问候,斯科特
解决方案
您所做的是正确的,网络应该从控制器完成。但是,最好将其与视图控制器分开,这似乎是您对 JSONController 类所做的事情。这是一篇关于“MVC-N”范式的有趣文章,这基本上正是您正在做的事情:将网络组件与视图控制器分离。
推荐阅读
- entity-framework - 使用实体框架生成非多态查询
- tfs - 将超链接添加到 WorkItem 的讨论区
- php - 如何使用 php 显示 MSQL 表并在 Web 浏览器中编辑它
- audio - 有没有办法只为特定的接收器启用`module-suspend-on-idle`
- c# - 当控件位于拆分器容器内时,查找相对于父窗体的控件位置
- apache-spark - DataSourceReader 和 SupportPushDownFilters
- java - 命令提示符中的 Javac 命令不执行文件
- database - MS Access:执行提供程序命令时数据提供程序失败
- c++ - Eigen::ArrayXd 与 std::array
- java - XPath 中带有字符串变量的 Java XPath 语法