2016-11-30 5 views
0

Ich habe Funktionen zum Löschen und Bearbeiten meiner Kerndatenelemente über die Benutzeroberfläche. Obwohl die Änderungen in der Benutzeroberfläche funktionieren, werden sie bei der Rückkehr zur Ansicht nicht beibehalten. Ich bin mir sicher, dass ich etwas vermisst habe, das keine Rettung verursacht, aber ich kann es nicht herausfinden. Ist es nur ein Fall, den Standard-Save-Throw und Fang an das Ende der Löschfunktion hinzuzufügen? Da gibt mir das Auspacken Fehler, es sei denn? oder !Probleme mit Stammdaten, die beim Ändern von Entitäten bestehen bleiben

func controller(_ controller: NSFetchedResultsController<NSFetchRequestResult>, didChange anObject: Any, at indexPath: IndexPath?, for type: NSFetchedResultsChangeType, newIndexPath: IndexPath?) { 
    switch (type) { 
    case .insert: 
     if let indexPath = newIndexPath { 
      workoutDesignerTable.insertRows(at: [indexPath], with: .fade) 
     } 
     break; 
    case .delete: 
     if let indexPath = indexPath { 
      workoutDesignerTable.deleteRows(at: [indexPath], with: .fade) 
     } 
     break; 
    case .update: 
     if let indexPath = indexPath, let cell = workoutDesignerTable.cellForRow(at: indexPath) as? RoutineTableViewCell { 
      configure(cell, at: indexPath) 
     } 
     break; 
    default: 
     print("...") 
    } 
} 

die Lösch func

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 
    if editingStyle == .delete { 
     // Fetch Exercise 
     let UserExercise = fetchedResultsController.object(at: indexPath) 
     // Delete Exercise 
     UserExercise.managedObjectContext?.delete(UserExercise) 
    } 
} 

Antwort

1

Ich glaube, Sie brauchen so etwas wie diese

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 
    if editingStyle == .delete { 
     let UserExercise = fetchedResultsController.managedObjectContext 
     UserExercise.delete(fetchedResultsController.object(at: indexPath)) 
     do { 
       try UserExercise.save() 
     } catch { 
     // Replace this implementation with code to handle the error appropriately. 
     // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. 
     let nserror = error as NSError 
        fatalError("Unresolved error \(nserror), \(nserror.userInfo)") 
     } 
    } 
} 
+0

diese Antwort:

Ich habe das Schaltergehäuse für die Funktionen eines Beispiel enthalten sind

verwendet scheint zu funktionieren, danke! – infernouk

Verwandte Themen