3

对于一个简单的笔记应用程序,有一个带有 fetchedResultsController 的表格视图控制器,其中包含核心数据中保存的笔记列表。用户可以单击 + 按钮添加新注释,也可以单击表格视图中的一条记录来编辑现有注释。在任何一种情况下,都会显示带有文本视图的模态视图控制器。

我想在用户键入每个字母时保存,所以在 textViewDidChange 中我正在更新核心数据。如果用户输入速度太快,核心数据会保存挂起。我最近添加了将更新添加到 NSOperationQueue 的代码,这是从这里获取的一个想法:
如何在 iOS 中实现仅处理最新请求的工作队列?这在一定程度上有所帮助。

这是我需要帮助的问题。假设用户在 textView 中键入一个更新,然后按下 Done 以返回到 table view 控制器,然后在原始更新在 table view 中刷新之前再次单击同一注释以再次编辑该注释。用户会看到一个包含旧数据的 textView。更新不存在。如果用户返回表格视图并再次编辑注释,则会显示最新更新。

有哪些方法需要考虑,或者我该如何尝试解决这个问题?我希望 textView 始终显示最新更新,即使用户从 textView 和 tableViewController 来回切换的速度比用户应该的要快;)

4

2 回答 2

2

您不需要在每次用户添加字符时保存上下文,仅在他完成添加注释时保存上下文,或者至少在文本字段失去焦点(第一响应者辞职)时保存。每次他敲击时都这样做是没有意义的。保存上下文是一项非常昂贵的操作。

于 2012-12-02T05:20:48.623 回答
0

也许尝试一次保存所有更改:

- (void)viewWillDisappear:(BOOL)animated

而不是不断保存为用户类型,这有点多余。

如果用户转到他们的主屏幕,则将更改保存在

- (void)applicationDidEnterBackground
于 2012-12-02T05:16:08.327 回答