iOS Cross Cutting Concerns

时间:2014-08-09 00:12:56

标签: ios architecture swift ios8 cross-cutting-concerns

我有一个Swift应用程序,我正在努力,允许用户保存有关其个人资料的各种设置。在我的代码中,有时候知道这些设置/首选项对于应用程序的业务逻辑很重要。其中一个是用户工作的地方(他们的工作,(在sqllite数据库中有一行ID作为主键)。用户可以在任何给定时间在应用程序中选择一个(并且只有一个)把它想象成一个简介 - 他们可以完成许多工作,但只选择一个。

以下是了解workid配置文件很重要的场景:

  1. 在我的sqllite数据库中,根据当前选择的工作ID检索工作/班次信息(因此不是数据库中的ID,而是他们当前选择的ID)。我将此传递给我的查询。
  2. 在NSDate扩展功能中,当我确定有关其开始日期的一些内容时,我需要检索其当前选择的配置文件,并将其用于计算。
  3. 当我想显示/隐藏某些字段时,在特定视图模型中。
  4. 在警示视图中显示与其当前工作场所相关的内容。
  5. 现在我认为快速而肮脏的方法就是在实用程序类中为nsuserdefaults创建一个包装类。当然,您的所有信息都存储在sqllite中,但您当前选择的应用程序首选项位于nsuserdefaults中,因为我可以更改它(并且它将更改)。这将与我的其他横切关注点相关,例如日志记录/错误处理,我可以在所有工作中使用类似的实用程序类。

    我可以从我的应用程序的每一层调用这个帮助器/实用程序类这一事实看起来像是一个你不会做的典型的红旗。无论是日志记录还是用户服务来获取信息。

    我很想知道其他人在这样的场景中做了什么。当您需要来自应用程序各处的nsuserdefaults时,答案是“关心谁”,只需要创建一个实用工具课程并在任何需要的地方进行调用" ?或者是否有其他人使用精心设计的iOS应用程序进行的最佳实践?我知道AOP是人们倾向于推荐的东西。这在iOS中占有一席之地吗?

    非常感谢stackoverflow:)

1 个答案:

答案 0 :(得分:1)

  

允许用户在任何给定时间在应用中选择一个(且仅一个)。

这告诉我你要创建一个单例类。每次要更改配置文件时,都会点击单例类并进行设置。该类封装了获取/设置所需内容的所有逻辑,以及访问器功能。这就是我多年来一直在用我的ObjC代码做的事情,而且它对我很有帮助。它非常容易调试,其余代码需要对配置文件管理一无所知(除非它是您选择配置文件的UI部分)。