如何将实例化为不同视图控制器中的单独对象的对象的多个副本进行相同更新?

时间:2013-06-27 14:30:37

标签: ios objective-c web-services core-data singleton

我正在尝试在不同的视图控制器中拥有单个产品对象的多个副本(即,您在购物清单中有一个产品,并且当您搜索查询Web服务并返回搜索到的产品时)。如果该产品在购物清单中,则在搜索tableviewCell上有一个符号。

我想到了两种方法:

  1. 在singleton类中有一个数组,它通过id编号将产品缓存在NSMutableDictionary中,每次创建产品时,都会检查它是否有一个产品。如果是这样,它只使用已经存在的产品。我可以在产品中设置一个设置,说明它是否在购物清单上。
  2. 使用核心数据。我试图实现它,但不知道我怎么能完全做到这一点。我正在考虑使用核心数据,这样当我更新产品对象时,它也会在应用程序的其他部分使用NSFetchedResultsController进行更新。
  3. 这种情况的“标准做法”是什么?

    让我知道你的想法以及你将如何处理这个问题。谢谢!

2 个答案:

答案 0 :(得分:1)

您可以对数据管理器类使用单例模式,它将数据保存在模型数组中(例如:产品)

如果您使用单例数据管理器(例如:ProductManager),那么您的数据(例如:产品实体)对于应用程序生命周期模式中的所有类文件都是持久的。

您可以在此处找到更多信息:

Objective C Singleton Class

http://www.galloway.me.uk/tutorials/singleton-classes/

希望这就是你要找的东西。

答案 1 :(得分:0)

如果购物清单不需要写入磁盘,则选项1可以。如果它确实需要写入磁盘,您可以使用核心数据..或使用sqlite或NSArchiver。有几种存储数据的方法。