gpt4 book ai didi

ios - 一个一个保存 NSUndoManager 事务

转载 作者:行者123 更新时间:2023-11-29 01:59:27 25 4
gpt4 key购买 nike

我不仅需要将更改保存到本地核心数据中,还需要保存到服务器上。

我担心的是,就我而言,用户可以在短时间内进行大量交互。交互之间没有足够的时间接收服务器返回的成功消息。因此,要么我锁定 GUI,直到下一条消息返回(现在就是这种情况),要么选择不同的方法。

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

最佳答案

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

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

这意味着 iOS 设备可能有服务器不知道的排队更改,尤其是在网络不可靠或不可用的情况下。不过,在这些情况下,这几乎是不可避免的,除非你做了一些可怕的事情,比如在网络恢复之前拒绝让人们进行新的更改。

关于ios - 一个一个保存 NSUndoManager 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30518146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com