comment traiter avec NSMutableArray contenant CoreData Entrée après que l'input est supprimée de CoreData, montrant comme "<fault>"

PersonsArray: NSMutableArray =

( "<null>", "<null>", "<null>", "<MyProject.Person: 0x7ffc5257d850> (entity: Person; id: 0xd000000000040000 <x-coredata://8DD0B78C-C624-4808-9231-1CB419EF8B50/Person/p1> ; data: {\n image = nil;\n name = dustin;\n})", "<null>", "<null>", "<null>", "<null>", "<null>") 

si l'user supprime l'input CoreData (entité: Person; name = dustin)

PersonsArray: NSMutableArray =

 ( "<null>", "<null>", "<null>", "<MyProject.Person: 0x7ffc5257d850> (entity: Person; id: 0xd000000000040000 <x-coredata://8DD0B78C-C624-4808-9231-1CB419EF8B50/Person/p1> ; data: <fault>)", "<null>", "<null>", "<null>", "<null>", "<null>") 

Comment puis-je vérifier si un location d'index de PersonsArray contient ce "<fault>" pour que je puisse le returnner à "<null>" ?


Mon code qui supprime une input dans tableView (second VC)

 func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { switch editingStyle { case .Delete: appDel = UIApplication.sharedApplication().delegate as! AppDelegate context = appDel.managedObjectContext! //Could I do something like give VC2 the PersonsArray and here... //ADD Something like for ObjectIndex in 0..<PersonsArray.count { if PersonsArray[ObjectIndex] === results[indexPath.row] { PersonsArray[ObjectIndex] = NSNull() } } // then continue with the delete? context.deleteObject(results[indexPath.row] as! NSManagedObject) context.save(nil) self.viewDidLoad() default: return } } 

Il n'y a vraiment pas de moyen facile. La bonne réponse est … ne stockez pas les instances NSManagedObject dans un tableau. Utilisez NSFetchedResultsController, etc. lorsque vous êtes dans cette situation ou ré-extrayez les objects pour déterminer ce qui rest.

Une autre option consiste à gérer manuellement le tableau en écoutant les notifications NSManagedObjectContextDidSave et en supprimant les objects du tableau lorsqu'ils sont supprimés du context.

L'utilisation d'un NSFetchedResultsController est généralement plus facile.

Mise à jour 1

Dans votre controller de vue principale, vous pouvez conserver une reference à l'object -objectID place de l'object. Ensuite, lorsque vous essayez de réaliser l'object, vous récupérez un nil s'il est parti. Pas joli mais ça peut marcher.

Au lieu de cela, cependant, votre controller de vue principal doit écouter NSManagedObjectContextDidSaveNotification et dans cette notification est un -userInfo et à l'intérieur de cette propriété il y a trois instances NSSet . Un contenant tous les objects mis à jour, un pour tous ceux qui ont été insérés et pour tous ceux qui ont été supprimés. Vous pouvez ensuite tester pour voir si quelque chose qui a été supprimé était dans votre tableau et les supprimer de votre tableau.