2016-09-26 2 views
-1

Я хочу отменить свою последнюю операцию. Я использую этот код. Но я не могу этого сделать. Пожалуйста, помогите .Any помощь будет 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

Спасибо, Sir ... Пожалуйста, отправьте фрагмент кода. Я новичок в iOS – Rishab

+0

За какую часть? – jrturton

+0

Чтобы точно сохранить операцию – Rishab

Смежные вопросы