2016-06-01 17 views
0

Ich bin neu bei CORE DATA in meiner App Ich verwende Coredata. Ich habe nur Daten in meinen Kerndaten gespeichert. Der Name meiner Entität lautet "FEED" und ich habe eine Zeile mit dem Namen "title", "id", "link", "desc". Jetzt möchte ich die Zeile basierend auf "id" löschen. also wie kann ich das tun?Wie lösche ich eine Zeile aus coredata (Entity) ios swift

Hier ist mein Code,

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell : MessageMusicCell = tableView.dequeueReusableCellWithIdentifier("MessageMusicCell") as! MessageMusicCell 

    cell.pinButton.tag = indexPath.row 
    cell.pinButton.addTarget(self, action: #selector(MessageViewController.buttonDeletePressed(_:)), forControlEvents: UIControlEvents.TouchUpInside) 
    cell.selectionStyle = .None 



     person = people[indexPath.row] 
     cell.lbl_title_msg_music.text = person!.valueForKey("title") as? String 
     cell.img_message_music.image = UIImage(named: "PlaceHolder") 
     cell.desc_msg_music.text = person!.valueForKey("desc") as? String 


    return cell 
} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

     print(people.count) 
     return people.count 


} 

func buttonDeletePressed(sender:UIButton) { 


} 
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

    let cell : MessageMusicCell = tableView.dequeueReusableCellWithIdentifier("MessageMusicCell") as! MessageMusicCell 


} 

so, wie ich dies tun kann?

Antwort

3

versuchen, wie diese,

func buttonDeletePressed(sender:UIButton) { 

     let appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
     let context:NSManagedObjectContext = appDel.managedObjectContext 

     let index = sender.tag 

     context.deleteObject(people[index] as NSManagedObject) 
     people.removeAtIndex(index) 

     let _ : NSError! = nil 
     do { 
      try context.save() 
      self.tableView.reloadData() 
     } catch { 
      print("error : \(error)") 
     } 
} 

Hope this Ihnen helfen.

+0

funktioniert es Danke –

+0

Sie sind willkommen ....! –

0

Sie können wie Daten löschen,

let appDel:AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate 
     let context:NSManagedObjectContext = appDel.managedObjectContext! 
     context.deleteObject(myData[indexPath.row] as NSManagedObject) 
     myData.removeAtIndex(indexPath.row) 
     context.save(nil) 

dies von commitEditingStyle getan wird so verwendet hier indexPath.row. Sie können Ihre ID weitergeben, wenn Sie Daten von einem anderen Ort löschen möchten. Wenn Sie Daten aus der Tabellenansicht löschen möchten, sollten Sie commitEditingStyle implementieren und Daten wie oben erwähnt löschen.

Hope this helfen :)

1
func deleteFeed(id:String) 
{ 
    let appDelegate = 
     UIApplication.sharedApplication().delegate as? AppDelegate 
    let managedContext = appDelegate?.managedObjectContext 
    let fetchRequest = NSFetchRequest(entityName:"FEED") 
    fetchRequest.predicate = NSPredicate(format: "id = %@", "\(id)") 
    do 
    { 
     let fetchedResults = try managedContext!.executeFetchRequest(fetchRequest) as? [NSManagedObject] 

     for entity in fetchedResults! { 

      managedContext?.deleteObject(entity) 
     } 
    } 
    catch _ { 
     print("Could not delete") 

    } 
} 

jetzt können Sie diese Funktion aufrufen und die ID übergeben, was Sie

func buttonDeletePressed(sender:UIButton){ deleteFeed("1") }

markieren Sie bitte meine Antwort löschen möchten, wenn es Ihnen hilft.

+0

let index = sender.tag print (Index) lassen feedId Person = .valueForKey ("feed_id") ?. objectAtIndex (Index) deleteFeed (feedId! Wie! String) –

+0

von oben Code i erhalten, dass Nfstring ObjectAtindex kann nicht verwenden –

+0

Also wie kann ich meine Feed-ID dort bekommen? –

0
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { 
switch editingStyle { 
    case .Delete: 
    // remove the deleted item from the model 
    let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
    let context: NSManagedObjectContext = appDel.managedObjectContext 
    context.deleteObject(people[indexPath.row]) 
    people.removeAtIndex(indexPath.row) 
    do { 
     try context.save() 
    } catch _ { 
    } 

    // remove the deleted item from the `UITableView` 
    self.tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) 
    default: 
     return 
    } 
} 

Hoffe, das könnte eine Hilfe sein!

Verwandte Themen