2015-05-22 3 views
0

Я новичок в Swift, и я следую учебному пособию по созданию приложения, ориентированного на жесты.Удаление основных объектов данных в виде таблицы

Как и в учебнике, табличный вид заполняется из объектов массива.

Существует функция, позволяющая удалить элемент из представления таблицы, когда пользователь перетаскивает ячейку влево.

func toDoItemDeleted(toDoItem: ToDoItem) { 
    let index = (toDoItems as NSArray).indexOfObject(toDoItem) 
    if index == NSNotFound { return } 

    // could removeAtIndex in the loop but keep it here for when indexOfObject works 
    toDoItems.removeAtIndex(index) 

    // use the UITableView to animate the removal of this row 
    tableView.beginUpdates() 
    let indexPathForRow = NSIndexPath(forRow: index, inSection: 0) 
    tableView.deleteRowsAtIndexPaths([indexPathForRow], withRowAnimation: .Fade) 
    tableView.endUpdates()  
} 

В учебнике массив называется toDoItems, и есть также класс NSObject имени ToDoItem.

В моем внедрении я использую Core Data вместо массива, чтобы заполнить представление таблицы. Я создал NSObject с именем Tasks вместо NSObject из учебника.

Как изменить функцию для удаления объекта Core Data вместо объекта массива?

спасибо.

ответ

2

Ваша проблема заключается в том, что вы удаляете NSManagedObject из массива, но не из контекста управляемого объекта. Для того, чтобы удалить его из основных данных, вы должны удалить его из управляемого контекста объекта следующим образом:

managedObjectContext?.deleteObject(toDoItem) 
managedObjectContext?.save(nil) 

Однако, если вы используете Core Data для заполнения UITableView, я бы посоветовал использовать NSFetchedResultsController. Полная реализация может быть найдена here.

+0

Спасибо, это работает – mvasco

0
  1. Delete Item от Core Data
  2. Удаление элемента из массива NSObject
  3. Удалить That от UITableView

Запись код ниже В commitEditingStyle Метод

if editingStyle == .Delete { 

     // Step : 1 
     let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate 

     let manageContext = appDelegate.managedObjectContext! 
     // I have Store Item in Data which is type of NSManagedObject 
     // This will remove item from coredata 
     manageContext.deleteObject(Data[indexPath.row]) 

     var err:NSError? 

     if !manageContext.save(&err) 
     { 
      println("Data couldn't delete") 
     } 
     // Step : 2 Delete the row from the data source 

     self.Data.removeAtIndex(indexPath.row) 

     // Step 3: 
     tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) 
    } 
Смежные вопросы