我想撤消上一次操作。我正在使用此代码。但我无法做到这一点。请帮忙。任何帮助都会得到帮助
首先我保存记录
@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()
答案 0 :(得分:0)
NSManagedObjectContext
需要撤消管理器才能启用撤消操作。在iOS上,默认情况下(出于性能原因),它没有。
即使它 (您可以创建并分配一个),您的代码也无法正常工作 - 撤消撤消最新的未提交更改。在您的示例中,您已保存了上下文 - 没有内置的撤消支持。
考虑到iOS上大多数编辑/插入操作的模态性质,通常更容易创建一个新的上下文用作编辑暂存器并将其扔掉(如果用户点击或取消)或保存它(如果用户点击保存或完成或等等)。