【问题标题】:Best design pattern to handle iOS Application State/Data处理 iOS 应用程序状态/数据的最佳设计模式
【发布时间】:2017-11-14 14:38:02
【问题描述】:

我正在开始一个新项目(学习目的),我正在尝试找出在以下场景中使用的最佳软件设计模式。

我有一些数据需要从多个 Web 服务下载并存储在我的应用程序的某个位置,以便稍后显示。然而,每条数据(例如教师列表、学生列表)将仅用于一个或多个特定视图控制器(例如教师视图控制器和学生视图控制器)。

我读到 Singleton 模式或使用 AppDelegate 来存储变量(像 ApplicationData 这样的对象)是一种不好的做法,在我想限制数据访问的示例中更是如此。

那么,我应该选择哪种设计模式?我已经阅读了一些关于依赖注入的内容,但我对此一无所知,或者它是否对我在这个问题上有所帮助。如果有帮助,一些带有解释的例子会很好。

【问题讨论】:

  • 您的应用会充当服务器-客户端应用程序,还是您真的需要持久化所有数据(例如,供离线使用)?
  • 数据需要持久化。
  • 请不要在您的帖子中添加投票评论或建议,这就像在您的背上画一个目标,对大多数读者没有任何用处。如果您愿意,可以将其添加为评论。

标签: ios design-patterns


【解决方案1】:

您需要某种数据库来存储下载的数据。不错的选择是 Realm 和 Core Data。处理数据的正确方法是:

  1. 检查数据是否已在 DB 中,如果可用则显示。
  2. 从服务器下载或更新数据并将其解析为对象。
  3. 将对象保存到 DB。
  4. 向用户显示从数据库获取的数据。

根据需要下载数据。当您与学生一起打开 VC 时,只下载学生数据等等。

已编辑:如果您需要打开应用程序上的所有数据,请在第一个屏幕打开之前将其加载并放入数据库中。然后只需使用 DB 向用户显示数据。

【讨论】:

  • 我想在应用程序启动时准备好数据,因为应用程序有一个加载屏幕。在 segues 之间等待大约 20 秒是一种糟糕的用户体验。
  • @Exprove 如果您使用数据库中的缓存数据,您只需要加载第一次数据。但是,如果你真的加载了超过 20 秒的小部分数据,那么最好在开始时加载所有数据(但我担心它会花费超过 20 秒的时间)。我已经编辑了答案。
  • 你是在告诉我在每个 segue 中查询数据库吗?会不会有点慢?编辑:我知道有准备方法,但它仍然是一个好习惯吗?
  • @Exprove 查询数据库足够快,不用担心。如果您怀疑以后可以使用 Profiler 测量速度,但我从未有过这样的经验。当然,如果您的数据包含一些保存到数据库的图像或视频,则可能会发生这种情况,但这是无稽之谈。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2011-09-10
  • 2014-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多