iphone – 我是通过在启动时获取对象并在我想要保留数据时调用save来正确使用Core Data吗?

我正在深入研究iOS编程,并在我的应用程序中使用Core Data来持久保存游戏数据,但是,我想知道我的方法是否是使用Core Data的错误方法.我的数据库中有三个表,前两个表与另一个表有一对多的关系(即UserProfile – >> Puzzle Packs – >> Puzzles).

我正在使用和保存数据的方法很简单,使用NSFetchedResultsController检索UserProfile的实例,并将UserProfile对象存储为我的App Delegate中的实例var.然后我在其余代码中使用该UserProfile对象来访问和修改拼图包和谜题的状态(表示用户在游戏中的进度),每当我对对象进行更改时,我只需调用NSManagedObjectContext的save方法更新DB,它也存储在App Delegate中.

我的问题是,我是否应该在需要访问或修改数据时从数据库中获取数据,或者是我当前的方法,一次获取顶级对象并经常调用save方法,使用Core Data的正确方法是什么?

提前感谢您的智慧!如果我的问题很奇怪,我很抱歉,我还是个菜鸟.

最佳答案 只要您只使用单个NSManagedObjectContext处理这些对象(即,您不必在上下文之间合并更改),我就不会看到提取一次的问题,并根据需要进行保存.

也就是说,当您使用多个上下文时(例如,使用NSOperation / NSOperationQueue或其他需要单独上下文的多线程技术),您需要确保合并更改并更新其他上下文,以便从一个线程进行更改不要在别人身上扯掉某些东西.

点赞