2017-07-05 3 views
0

En essayant de supprimer des cellules dans mon UITableView, mais quand je les supprime, elles réapparaissent après que je recharge l'application. Je supprime de la même matrice que j'ai stocké les valeurs avec des données de base. Dois-je également supprimer directement de CoreData? comment je fais ça?UITableView Le contenu n'est pas supprimé après la suppression? [Swift 3.0 - Xcode 8]

Heres mon code:

///Function to remove TableView Cells 

public func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 
if editingStyle == UITableViewCellEditingStyle.delete 
{ 
    SetTIME.remove(at: indexPath.row) 
    if SaveData.count == 4 { 
     SaveData.remove(at: myIndex*4) 
     SaveData.remove(at: (myIndex*4)+1) 
     SaveData.remove(at: (myIndex*4)+2) 
     SaveData.remove(at: (myIndex*4)+3)} 
     tableView.reloadData() 
    } 

} 



///CoreData 

override func viewDidLoad() { 
    super.viewDidLoad() 

    let appDelegate = UIApplication.shared.delegate as! AppDelegate 
    let context = appDelegate.persistentContainer.viewContext 
    let newTrip = NSEntityDescription.insertNewObject(forEntityName: "Sets", into: context) 
    if DataGrab.count == 4{ // need to change after storing data in VC2 before sending 
    newTrip.setValue(DataGrab[0], forKey: "set1") 
    newTrip.setValue(DataGrab[1], forKey: "set4") 
    newTrip.setValue(DataGrab[2], forKey: "set3") 
    newTrip.setValue(DataGrab[3], forKey: "set2")} 


    do { 
     try context.save() 
     print("Saved") 
    } 
    catch{ 
     //ProcessError 
    } 


    let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Sets") 
    request.returnsObjectsAsFaults = false 

    do { 
     let results = try context.fetch(request) 
     if results.count > 0 { 
      for result in results { 
       if let set1 = (result as AnyObject).value(forKey: "set1") as? String 
       { 
        if SaveData.contains(set1){ 

        } else { 
        SaveData.append(set1) 
         SetTIME.append(set1) 

       if let set2 = (result as AnyObject).value(forKey: "set2") as? String 
       { 
        SaveData.append(set2) 
       } 
       if let set3 = (result as AnyObject).value(forKey: "set3") as? String 
       { 
        SaveData.append(set3) 
       } 
       if let set4 = (result as AnyObject).value(forKey: "set4") as? String 
       { 
        SaveData.append(set4) 
         } 
        } 
       } 
      } 
     } 
    } 
    catch{ 
     //ProcessErrors 
    } 

Répondre

0
@IBOutlet weak var btnremove: UIButton! 
     @IBOutlet weak var managetable: UITableView! 
     var arrayStudent:[StudentData] = [] 
     var streno:String! 
     let appDelegate = UIApplication.shared.delegate as! AppDelegate 
     var managedContext:NSManagedObjectContext! 
     var entity:NSEntityDescription! 

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
     { 
      let obj = arrayStudent[indexPath.row] 
      streno = obj.strEnrollment 
      print(streno) 
      deleteFeed(eno:streno) 
     } 
func deleteFeed(eno:String) 
    { 
     managedContext = appDelegate.persistentContainer.viewContext 
     let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName:"Student") 
     fetchRequest.predicate = NSPredicate(format: "eno = %@", "\(eno)") 
     do 
     { 
      let fetchedResults = try managedContext!.fetch(fetchRequest) as? [NSManagedObject] 

      for entity in fetchedResults! { 

       managedContext?.delete(entity) 
       do 
       { 
        try managedContext.save() 
        _ = self.navigationController?.popViewController(animated: true) 

       } 
       catch let error as Error! 
       { 
        print(error.localizedDescription) 
       } 
       managetable.reloadData() 

      } 
     } 
     catch _ { 
      print("Could not delete") 

     } 
    }