我正在编写一个带有几个(可能是 8 个)调查式模块的 iOS 应用程序,用户将在其中回答一系列问题(关于家庭生活、健康等)。有些模块有多达 12 个问题。每个问题都有自己的 nib 和自己的 UIViewController。理想情况下,答案将在模块结束时写入数据库。每个模块对应一个表中的一条记录。永远只有一个用户,因此只有一个记录。我想将核心数据堆栈留在应用程序委托中。我目前正在从视图控制器创建核心数据对象。
我一直在努力寻找:
- 将累积数据传递到 UIViewController 的长线性链的最佳方式。
- 另一种解决方案。
我知道以下可能性:
- 通过视图控制器的重载初始化程序将数据数据沿链传递,使用在每次传递时添加的集合
- 再次使用集合将数据传递给子视图控制器中的属性
- 在应用程序委托中使用全局变量(我不认真考虑这是一个选项)
- 使用单例类
我认为在这种情况下,单例被认为是最好的选择,至少在设计方面,但我的研究到目前为止,我还没有听说有人使用这么多(8 个,也许更多)单例。他们引起如此多争论的事实使我感到困惑。而且我有时会看到多线程与单例一起讨论,但我不明白为什么它们会齐头并进(如果他们甚至这样做的话)以及我将如何处理它。最后,如果我要使用单例,我会从单例还是从视图控制器调用核心堆栈?
编辑:如果我使用单例,另一个问题是 - 我如何处理我的核心数据实体类?我可以或应该使用单例类来替换它们吗?
将不胜感激对上述和/或解决方案的替代建议的回答。如果可能的话,我想在好的设计和简单/快速的实现之间找到一个折衷方案。更改应用程序设计不是一种选择(客户正在确定布局和流程)。