CoreData:错误:NULL _cd_rawData但对象没有变成错误

joh*_*han 39 iphone core-data

保存到核心数据时偶尔会出现此错误.我无法重新创建它.

有没有人有这个错误的经验;

CoreData: error: NULL _cd_rawData but the object is not being turned into a fault
Run Code Online (Sandbox Code Playgroud)

Nea*_*rdt 50

原因:

当对象的上下文不属于当前线程时,会发生这种情况.错误的许多方式之一可以表现出来.

调试:

发生崩溃时,请执行以下操作:

  1. 检查发生崩溃的线程(Xcode> Debug Navigator)
  2. 在控制台打印上,并发类型 NSManagedObjectContext
  3. 如果并发类型是,mainQueueConcurrencyType那么它需要在主线程上,否则在后台线程上.

用于检查并发类型的控制台命令:

p context.concurrencyType
Run Code Online (Sandbox Code Playgroud)

在上面的示例命令中,NSManagedObjectContext存储在变量中context

控制台输出:

(NSManagedObjectContextConcurrencyType) $R4 = mainQueueConcurrencyType
Run Code Online (Sandbox Code Playgroud)

  • 如果您需要从后台线程访问数据库,请使用该线程创建一个新的 MOC,然后使用它来创建、查询、变异、保存等。 [MagicalRecord](https://github.com/magicalpanda/MagicalRecord ) 对我的应用程序非常有帮助。 (3认同)
  • 是的,这正是我的情况。这个错误基本上是因为从后台线程访问主 MOC。 (2认同)