首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >逐个保存NSUndoManager事务

逐个保存NSUndoManager事务
EN

Stack Overflow用户
提问于 2015-05-28 22:32:15
回答 1查看 134关注 0票数 0

我不仅需要将更改保存在本地的Core Data中,还需要保存在服务器上。

我担心的是,在我的例子中,用户可以在短时间内完成大量的交互。在交互之间,没有足够的时间接收服务器返回的成功消息。所以,要么我锁定GUI,直到下一条消息返回--这就是现在的-,或者选择另一种方法。

我的新方法是让用户进行许多交互,并将事务放到由undo stack提供的NSUndoManager上,在NSManagedObjectContext上启用,但只保存/提交成功消息被接收的事务。如何一次一个地撤消“游标”,一个接一个地提交记录,尽管上下文中已经包含了大量未保存的更改?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-29 17:34:17

NSUndoManager并不真正适合这个任务。您可以告诉它撤消或重做操作,但不能检查这些操作或在当前撤消堆栈中有选择地保存数据。

我过去所做的就是创建我自己的输出更改队列。每当更改在本地保存时,请将这些更改添加到未同步的传出更改列表中。然后使用不同的队列处理该队列,方法是将它们发送到服务器,如果服务器报告成功,则清除这些更改。您可以使用NSManagedObjectContextWillSaveNotification和/或NSManagedObjectContextDidSaveNotification来监视更改和更新出站队列。

这意味着iOS设备可能出现了服务器不知道的队列更改,特别是当网络不可靠或不可用时。不过,在这种情况下,这几乎是不可避免的,除非你做了一些可怕的事情,比如拒绝让人们做出新的改变,直到网络恢复。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30518146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档