iphone - 我是否通过在启动时获取一次对象并在我想保留数据时调用保存来正确使用核心数据?

标签 iphone ipad core-data ios

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

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

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

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

最佳答案

只要您只使用单个 NSManagedObjectContext 处理这些对象(即,您永远不必合并上下文之间的更改),那么我看不出获取一次并根据需要保存的问题。

也就是说,当您使用多个上下文(例如,使用 NSOperation/NSOperationQueue 或其他需要单独上下文的多线程技术)时,您需要确保合并更改并更新其他上下文,以便更改从一个线程不要破坏另一个线程的东西。

关于iphone - 我是否通过在启动时获取一次对象并在我想保留数据时调用保存来正确使用核心数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4166893/

相关文章:

iPhone - 获取给定地点/时区的当前日期和时间并将其与同一地点的另一个日期/时间进行比较的正确方法

iphone - ExtAudioFileWrite 到 m4a/aac 在双核设备(ipad 2、iphone 4s)上失败

ios - CoreData、UIManagedDocument 和空持久存储

ios - 在 UIManagedDocument 中禁用自动保存

iPhone SDK : how to switch from a login screen to a navigation interface?

iphone - facebook-ios-sdk requestWithGraphPath : @"me/friends"

iphone - 平移手势干扰 UISlider

ios - 无法使用 phonegap iOS 为 iPad pro 设置应用程序图标

iphone - 是否可以从远程浏览器连接到我的 CocoaHttpServer?

ios - 更新 CoreData 中的记录时出现问题