首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将公共ViewController表示逻辑移到表示帮助类可以吗?

将公共ViewController表示逻辑移到表示帮助类可以吗?
EN

Stack Overflow用户
提问于 2014-11-22 13:02:50
回答 1查看 82关注 0票数 0

我正在尝试使用层来确保在我的Swift / iOS / Xcode 6项目中将所有内容都划分为正确的区域。最终,的问题是:将常用的表示级逻辑移动到单独的表示助手类,而不是在多个视图控制器中反复写入它,而没有什么区别吗?

下面是一个将其联系在一起并给出上下文的示例:

我的目标之一是使用UITableView来显示报表数据。这个UITableView将包含7-10行,这取决于用户的首选项(nsuserdefaults默认值)。每行包含标签的本地化字符串和一些十进制值。

举个例子,一排可能是“本周销售额:500.00美元”。

我有一个报告服务类,它负责与数据库对话,并返回/实例化报表对象。这个report对象包含报表的原始数据,即您在本周、本月、今年等做了多少钱。用户是否想显示所有这些值与服务无关--它只是得到了所有的东西。

因此,由于我有三个视图模型使用相同的报表,所以我认为,每次检查用户的首选项,然后创建/绑定一个数组到UITable,并将标签与服务返回的对象中的报表值匹配,重写相同的代码是错误的。

我认为,一个更好的方法是创建一个表示级助手类,其任务是接受一个报表对象(我之前提到的包含报表值的东西),接受用户的首选项,然后更笼统地将它们组合起来,创建一个与其各自的报表值匹配的本地化字符串列表,这与视图控制器想要的内容无关。也许以后如果需求发生变化(不同的视图控制器需要更多的定制),我可以在该类中使用标志或不同的函数名。

这样我所要做的就是

代码语言:javascript
复制
 var report = ReportHelper.GenerateReport(reportData, userSettings)

现在,report将是一个类似于此的对象(模拟JSON数据):

{“本周的金额”:“100美元”,“本月的金额”:“500美元”,“今年的金额”:“10,000美元”}

我可以在任何视图控制器中使用这个。

另一种方法是只对上面的值进行硬编码(显然仍在拉本地化字符串),但我不知道是否添加了所有这些字符串+基于用户首选项+格式的检查。把它搬开似乎更优雅。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-11-22 16:55:00

我对你的问题知之甚少,无法给出明确的答案,但基本上你有两个选择:

  • 继承
  • 作文

我个人喜欢继承,虽然经常说你应该选择组合而不是继承。

您的助手听起来有点像组合,所以这将是首选的设置。根据我所理解的具体问题,继承将导致数据的重复,因此这是选择组合的另一个论据。

所以总的来说你似乎是对的

编辑:

继承是一种“是”关系,而构成是一种“有”关系。有关组合的更多细节,请参见composition。查看inheritance以获得更多信息,以了解为什么和何时选择作文

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27077675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档