我正在深入研究iOS编程并在我的应用程序中使用Core Data来保存游戏数据,但是,我想知道我的方法是否是使用Core Data的错误方法。我的数据库中有三个表,前两个表与另一个表有一对多的关系(即UserProfile - >> Puzzle Packs - >> Puzzles)。
我正在使用和保存数据的方法很简单,使用NSFetchedResultsController检索UserProfile的实例,并将UserProfile对象存储为我的App Delegate中的实例var。然后我在其余代码中使用该UserProfile对象来访问和修改拼图包和谜题的状态(表示用户在游戏中的进度),每当我对对象进行更改时,我只需调用NSManagedObjectContext的save方法更新DB,它也存储在App Delegate中。
我的问题是,我是否应该在需要访问或修改数据时从数据库中获取数据,或者是我当前的方法,一次获取顶级对象并经常调用save
方法,正确的方法是使用核心数据?
提前感谢您的智慧!如果我的问题很奇怪,我很抱歉,我还是个菜鸟。
答案 0 :(得分:2)
只要您只使用单个NSManagedObjectContext处理这些对象(即,您永远不必在上下文之间合并更改),那么我不会看到提取一次并按需保存的问题。
也就是说,当您处理多个上下文时(例如,使用NSOperation / NSOperationQueue或其他需要单独上下文的多线程技术),您需要确保合并更改并更新其他上下文以便更改从一个线程不会破坏另一个线程。