对于简单的笔记应用程序,有一个带有fetchedResultsController的表视图控制器,它包含核心数据中已保存的笔记列表。用户可以单击+按钮添加新注释,也可以单击表视图中的某个记录来编辑现有注释。在任何一种情况下,都会显示带有文本视图的模态视图控制器。
我想在用户输入每个字母时保存,因此在textViewDidChange中我正在更新Core Data。如果用户键入太快,核心数据将保存挂起。我最近添加了代码以将更新添加到NSOperationQueue,这是一个从这里获取的想法:
How to implement work queue in iOS where only newest request is handled?这有点帮助。
这是我需要帮助的问题。假设用户在textView中键入更新,然后按Done返回到表视图控制器,然后单击相同的注释以在表视图中刷新原始更新之前再次编辑注释。向用户显示具有旧数据的textView。更新不存在。如果用户返回到表格视图并再次编辑该注释,则会显示最新更新。
需要考虑哪些方法,或者我如何尝试解决此问题?我希望textView始终显示最新的更新,即使用户从textView和tableViewController来回切换的速度比用户应该更快;)
答案 0 :(得分:2)
每次用户添加角色时都不需要保存上下文,只有在完成添加注释后才能保存,或者至少在文本域失去焦点时(第一个响应者辞职)。每次点击都没有意义。保存上下文是一项相当昂贵的操作。
答案 1 :(得分:0)
也许尝试一次保存所有更改:
- (void)viewWillDisappear:(BOOL)animated
而不是像用户类型那样不断保存,这有点多余。
如果用户进入主屏幕,则将更改保存在
中- (void)applicationDidEnterBackground