CoreData: erreur: NULL _cd_rawData mais l'objet n'est pas transformé en erreur
J'obtiens parfois cette erreur lors de l'enregistrement dans des données de base. Je n'arrive pas à le recréer.
Quelqu'un at-il une expérience avec cette erreur?
CoreData: error: NULL _cd_rawData but the object is not being turned into a fault
?
Après plusieurs articles, la réponse était meilleure https://web.archive.org/web/20150215081345/http://www.cocoabuilder.com:80/archive/cocoa/311615-weird-core-data -crash.html
Raison:
Cela se produit lorsque le contexte de l'objet n'appartient pas au thread actuel. L'une des nombreuses façons dont l'erreur peut se manifester.
Déboguer:
Lorsque le crash se produit, procédez comme suit:
- Vérifiez le thread dans lequel l'incident s'est produit (Xcode> Navigateur de débogage)
- Sur la console, le type de concurrence de
NSManagedObjectContext
- Si le type de concurrence est
mainQueueConcurrencyType
, il doit être placé sur le thread principal, sinon sur les threads d'arrière-plan.
Commande de console pour vérifier le type de concurrence:
p context.concurrencyType
Dans l'exemple de commande ci-dessus, la NSManagedObjectContext
a été stockée dans la variable context
Sortie de la console:
(NSManagedObjectContextConcurrencyType) $R4 = mainQueueConcurrencyType
J'ai trouvé le même problème lorsque j'ai essayé de lire (accéder) aux données d'un Coredata Store dans un autre thread (pas principal).
Vous pouvez résoudre ce problème en suivant cette suggestion à partir de ce lien:
Données de base et threads/Grand Central Dispatch