0

我正在开发一个 iphone 应用程序,但不知道跨视图保存临时数据的最佳方式是什么。例如,我在服务器上有 xml,我将数据解析为一个对象,以便我可以保存信息。xml 有一些我想在一个视图上显示的数据和我想在另一个视图上显示的其他数据。我有一个名为 dataStore 的类,我想在视图中保存数据,最好的 iphone 做法是什么?

我研究了很多选项,我认为它可以在以下选项之间进行选择:

1) 使用 dataStore 作为委托并将数据保存在可以访问的委托中。

2) 将dataStore 用作单例类,并且只允许该类的一个实例并从dataStore 类的共享实例访问数据。

3) 甚至可能是一个我不知道但熟悉通过应用程序上下文和实例传递数据的 android 方式的 NSMangedObjectContext。

如果有人可以帮助我选择哪个是 iphone 上的最佳实践,我将不胜感激。

4

4 回答 4

2

您可以使用NSNotification. 您可以将临时对象与通知一起发送,作为发件人或在信息字典中。然后,需要部分数据的两个对象可以将这些部分拉出并保留这些部分,而临时数据对象可以是:临时的,仅持续到通知完成。只有你的视图需要和关心的部分才会出现,并且每个视图控制器都可以在有意义的时候释放它的部分。

于 2010-10-23T17:33:06.333 回答
0

在您的情况下,我建议将 dataStore 类转换为单例。在单例中,解析数据并具有返回视图所需信息的方法。如果您希望数据在启动时保持不变,Core Data (managedObjects) 是很好的选择。虽然很常见,但在 appDelegate 中存储数据是我选择的最后一个选项。

于 2010-10-23T16:37:49.477 回答
0
  1. 不,您不能让 dataStore 成为代表。你永远不应该保留你的代表,所以它不是数据的好地方,只是行为的好地方。

  2. 很可能是单身人士。您在这里拥有的可能是您的应用程序的模型,您的应用程序有什么理由应该能够处理两个模型?它可以同时显示多个文件吗?不要编写任何代码来阻止单例的客户端创建第二个实例!Objective-C 是一个动态的运行时,一个持久的用户无论如何都可以,所以你的代码所做的就是添加更多带有潜在错误的代码行。

  3. 除非你真的需要,否则不要打扰 Core Data 和 NSManagedObjectContext。只有当您打算在模型中处理比 RAM 容纳更多的数据时,您才需要这样做。

于 2010-10-23T17:08:54.240 回答
-1

这些都不是真正的 MVC。你想要三个课程:

  • 包含数据的模型
  • 视图,通常完全在 IB 中完成.xib
  • 视图控制器,它是文件的.xib所有者,并将数据作为实例字段。这个负责将模型的数据传递给视图,视图将视图控制器设置为它的delegateand dataSource. 这样,视图可以重复使用,并且只处理一小部分数据(即与实际可见的一样多)。
于 2010-10-23T16:42:34.720 回答