CoreData 中的撤消操作
Posted
技术标签:
【中文标题】CoreData 中的撤消操作【英文标题】:Undo Operation In CoreData 【发布时间】:2016-09-26 07:47:22 【问题描述】:我想撤消上一次操作。我正在使用此代码。但我无法做到这一点。请帮助。任何帮助都会得到帮助
首先我要保存记录
@IBAction func save(sender: AnyObject)
let appDelegate =
UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
let entity = NSEntityDescription.entityForName("Person",
inManagedObjectContext:managedContext)
entity!.uniquenessConstraints = [["name"]]
let person = NSManagedObject(entity: entity!,
insertIntoManagedObjectContext: managedContext)
//3
person.setValue(first.text, forKey: "name")
person.setValue(second.text, forKey: "age")
//4
do
try managedContext.save()
//5
people.append(person)
catch let error as NSError
print("Could not save \(error), \(error.userInfo)")
那我想重做
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.managedObjectContext.undo()
【问题讨论】:
【参考方案1】:NSManagedObjectContext
需要一个撤消管理器来启用撤消操作。在 ios 上,默认情况下(出于性能原因),它没有。
即使它确实(您可以创建并分配一个)您的代码也不会工作 - 撤消会撤消最新的未提交更改。在您的示例中,您已经保存了上下文 - 没有内置的撤消支持。
鉴于 iOS 上大多数编辑/插入操作的模态性质,通常更容易创建一个新上下文以用作编辑暂存器,然后将其丢弃(如果用户点击关闭或取消)或保存它(如果用户点击保存或完成或其他)。
【讨论】:
谢谢先生...请发送一些代码sn-p。我是 iOS 新手 哪一部分? 精确保存操作 我不确定代码 sn-p 是否能帮助您。你想做什么? 不要为每个插入保存。仅在需要时保存。这样你就可以撤消了。以上是关于CoreData 中的撤消操作的主要内容,如果未能解决你的问题,请参考以下文章
使用 2 个链接的 ManagedObjectContext 应用程序撤消 CoreData 更改