2017-07-05 2 views
0

Ich versuche Zellen in meinem UITableView zu löschen, aber wenn ich sie lösche, erscheinen sie wieder, nachdem ich die App neu geladen habe. Ich lösche aus dem gleichen Array, dass ich die Werte mit Core-Daten gespeichert habe. Muss ich auch direkt aus coreData löschen? wie mache ich das?UITableView Inhalt wird nach dem Löschen nicht gelöscht? [Swift 3.0 - Xcode 8]

Heres mein 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 
    } 

Antwort

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") 

     } 
    } 
zu erstellen
Verwandte Themen