2016-09-26 71 views
-1

我想撤销我最后一次操作。我正在使用此代码。但我无法做到这一点。请帮助。任何帮助,将apperciated在CoreData中撤消操作

首先我节省纪录

@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

NSManagedObjectContext需要撤消管理器,使撤销操作。在iOS中,默认情况下(出于性能原因),它没有一个。

即使它确实(您可以创建并指定一个),您的代码将无法工作 - 撤消会反转最新的未提交更改。在你的例子中你已经保存了上下文 - 没有内置的撤消支持。

鉴于iOS上大多数编辑/插入操作的模态性质,创建一个新的上下文以用作编辑暂存器并将其丢弃(如果用户打开解除或取消)或保存(如果用户点击保存或完成或其他)。

+0

谢谢先生...请发送一些代码片段。我是iOS的新手 – Rishab

+0

哪部分? – jrturton

+0

对于完全保存操作 – Rishab