为每个动作保存上下文

Posted

技术标签:

【中文标题】为每个动作保存上下文【英文标题】:Saving context for every action 【发布时间】:2016-05-03 18:37:17 【问题描述】:

我有我的应用程序的网络公园,它发现网络中的设备并通过 Magical Record 插入核心数据。但这发生在其他一些不是主线程的线程上。我也有带有 fetchresultcontroller 的 UITableView,它在表格视图中显示设备。但唯一的选择是如何让 fetchRequestController 现在了解我的更改,调用这个:

[[NSManagedObjectContext MR_contextForCurrentThread] MR_saveToPersistentStoreAndWait];

每次更改后。想念我的东西,或者这是正确的方法吗?

例子:

[MagicalRecord saveWithBlockAndWait:^(NSManagedObjectContext *localContext)
    MyCDDevice * localDevice = [MyCDDevice MR_createEntityInContext:localContext];
    [localDevice initFromDictionary:dictionary];
];

[[NSManagedObjectContext MR_contextForCurrentThread] MR_saveToPersistentStoreAndWait];

【问题讨论】:

只要应用程序运行,绝对不需要保存上下文。除非应用程序(可能)崩溃(在这种情况下,您可以在某些重要条目后保存上下文)。当应用程序进入后台并且应用程序即将终止时,应保存上下文。不建议过度写入磁盘。 你的上下文是主上下文的子上下文吗? @bauerMusic 谢谢,我也这么认为,但我想 100% 确定。 @Wain 好问题,我其实不知道。我使用本地上下文进行 Magical 记录块调用,我认为本地上下文是主上下文的子上下文,但无法 100% 确认 【参考方案1】:

保存每个完整的数据操作,这是MagicalRecord 推荐的。在saveWithBlockAndWait:之后,它被保存到持久存储中,所以不需要MR_saveToPersistentStoreAndWait

【讨论】:

以上是关于为每个动作保存上下文的主要内容,如果未能解决你的问题,请参考以下文章

Dynamic 点击保存按钮。不让它保存

媒体层:Core Graphics(绘图)

进程和线程

在保存和从上下文中删除之前验证实体

Struts 2 - 没有映射名称空间[/]的动作和与上下文路径[/ LoginApplication]相关联的动作名称[validateLogin]

保存后台上下文后的 NSFetchedResultsController NSRangeException