2016-06-01 1 views
0

Я новичок в CORE DATA в своем приложении. Я использую coredata. Я просто сохранил данные в своих основных данных. мое имя объекта «FEED», и у меня есть строки с именем «title», «id», «link», «desc», поэтому теперь я хочу удалить суставную строку на основе «id». так как я могу это сделать?Как удалить строку из coredata (Entity) ios swift

Вот мой код,

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 


} 

так, как я могу это сделать?

ответ

3

Попробуйте Как это,

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

Надеется, что это поможет вам.

+0

его работы Спасибо –

+0

Добро пожаловать ....! –

0

Вы можете удалить данные, такие как,

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) 

это делается из commitEditingStyle так что здесь используется indexPath.row. Вы можете передать свой идентификатор, если хотите удалить данные из другого места. Если вы хотите удалить данные из таблицы, тогда вы должны реализовать commitEditingStyle и удалить данные, как указано выше.

Надеется, что это поможет :)

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

    } 
} 

теперь вы можете вызвать эту функцию и передать идентификатор, что вы хотите удалить

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

пожалуйста, отметьте мой ответ, если он помогает вам.

+0

индекс ЛПЭ = sender.tag печати (индекс) пусть feedId = человек? .valueForKey ("FEED_ID") ?. objectAtIndex (индекс) deleteFeed (feedId! А! String) –

+0

по выше кода я получаю, что Nfstring ObjectAtindex не может использовать –

+0

Итак, как я могу получить свой фид? –

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

Надеюсь, это может быть полезно!

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