为每个动作保存上下文
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
。
【讨论】:
以上是关于为每个动作保存上下文的主要内容,如果未能解决你的问题,请参考以下文章
Struts 2 - 没有映射名称空间[/]的动作和与上下文路径[/ LoginApplication]相关联的动作名称[validateLogin]