2015-12-05 2 views
-1

До того, как был вызван метод deleteData(), я проверил, что в моих основных данных есть два экземпляра. Теперь мне нужно удалить его. Я упомянул об этом tutorial для удаления моих основных данных.Удаление элементов в данных ядра

С помощью этого кода мне удалось скопировать первый экземпляр NSManagedObject через let person = people[0] as! NSManagedObject, но приложение прекращено в этой строке managedContext.delete(person).

столкнулись ошибка была Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSManagedObjectContext delete:]: unrecognized selector sent to instance 0x7fefe28092e0'

func deleteData() { 
    var people = [Particulars]() 
    let fetchRequest = NSFetchRequest(entityName: "Particulars") 
    let appDel = UIApplication.sharedApplication().delegate as! AppDelegate 
    let managedContext = appDel.managedObjectContext 

    do { 
     people = try managedContext.executeFetchRequest(fetchRequest) as! [Particulars] 
     do { 
      let person = people[0] as! NSManagedObject 
      managedContext.delete(person) 
      try managedContext.save() 

      } catch let error as NSError { 
       print("Could not delete data \(error)") 
       } 
    } catch let error as NSError 
     { 
      print("Could not fetch data \(error)") 
     } 
} 
+1

Try 'managedContext.deleteObject (человек)' – pbasdf

ответ

0

Правильный вызов не delete , но deleteObject для NSManagedObjectContext.

Также обратите внимание, что более удобно писать person.first, а не people[0], но это, конечно, вопрос вкуса.

Я думаю let person = people[0] as! NSManagedObject проблематично, потому что

  1. Это не безопасно и будет вылетать, если нет результатов поиска. Использовать if let person = people.first ...

  2. Убитый от Particulars до NSManagedObject также не имеет смысла. Вы уже выполнили бросок при получении результатов поиска.

+0

Ну я новичок в стрижа, и я последовал за учебник, как это преподавалось. Спасибо за информацию. – jo3birdtalk

+0

Я тебя слышу. Некоторые учебники там пронизаны ошибками. – Mundi

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