2012-07-06 57 views
0

我即将开始一个新的IOS项目,我将使用核心数据作为存储最终用户数据的主要手段。我在应用程序的规划阶段遇到了一个问题,那就是如何去保存,加载和删除核心数据对象。下面是我能想到的三种可能的方法:

方法1
创建应用程序代理,我将使用UISharedApplication方法检索到每个视图控制器的通用数据对象。这意味着当应用程序启动时,它将创建一个Getters和Setters对象。
方法2
创建数据模型的类(的NSObject子类)并初始化,在每一个视图控制器。这意味着每个视图控制器必须拥有它自己的NSManagedObjectContext(应用程序委托将在启动时提供),它将在初始化时传递给数据模型类。这意味着在整个视图控制器中,它将使用它自己的数据模型类并从中调用方法。
方法3
让每个单独的视图控制器自行完成保存。例如一个-(IBAction)didAdd;将其中的所有代码保存到数据库。这样可以更容易地进行高效的数据调用,因为它可以基于视图控制器(批量大小等)具有正确设置的NSFetchResultsController核心数据存储,加载和删除不同位置的数据

我不确定哪种方式是我最好的方式,如果您能告诉我哪种方法最好,或者如果哪种方法都不好,那么最好的方法是做什么。

回答

0

还有一个方法编号4,它类似于你的方法1:把你的数据访问代码放到一个模型类中,并使其成为一个单例。这是在不同控制器之间共享模型状态的标准方式。将所有数据管理代码放入单例模型中可帮助您避免代码重复。

+0

这是完美的。我没有想到那个。 singleton类可能返回一个NSFetchedResultsController吗?这不会导致任何问题,是吗?另外,我将如何设置单例类的NSManagedObjectContext? – CoreCode 2012-07-06 02:34:13

+0

@CoreCode是的,单身人士可以拥有/管理/返回一个或多个'NSFetchedResultsController'对象;这不应该导致问题。至于设置'NSManagedObjectContext',很可能你想在你的单例的指定初始化器中设置它。 – dasblinkenlight 2012-07-06 02:52:35

+0

最好的方法是使用UISharedApplication方法还是直接从文件加载NSManagedObjectContext? – CoreCode 2012-07-06 03:13:37