web-dev-qa-db-fra.com

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

?

37
johan
12
iamsult

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:

  1. Vérifiez le thread dans lequel l'incident s'est produit (Xcode> Navigateur de débogage)
  2. Sur la console, le type de concurrence de NSManagedObjectContext
  3. 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
49
Neal Ehardt

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

0
Ohmy