我的代码使用核心数据执行了许多任务,然后当我去保存时,它崩溃而没有任何错误。我的保存代码很简单:
[[self managedObjectContext] save:&error];
NSLog(@"Error: %@", error);
它没有到达错误行,到那时它已经崩溃并退出到主屏幕。
我在诊断中选择了除“Guard Malloc”之外的所有内容。
这是我在运行 save 命令时得到的日志:
CoreData: sql: BEGIN EXCLUSIVE
CoreData: sql: SELECT Z_MAX FROM Z_PRIMARYKEY WHERE Z_ENT = ?
CoreData: sql: UPDATE Z_PRIMARYKEY SET Z_MAX = ? WHERE Z_ENT = ? AND Z_MAX = ?
CoreData: sql: COMMIT
CoreData: sql: BEGIN EXCLUSIVE
CoreData: sql: INSERT INTO ZENTRY(Z_PK, Z_ENT, Z_OPT, ZLOCATION, ZBOOKMARKED, ZCREATIONDATE, ZENTRYID, ZMESSAGE, ZSECTIONIDENTIFIER, ZTICDSSYNCID, ZVERSION) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
CoreData: sql: COMMIT
CoreData: sql: pragma page_count
CoreData: annotation: sql execution time: 0.0047s
CoreData: sql: pragma freelist_count
CoreData: annotation: sql execution time: 0.0069s
在此之前没有提及任何错误。我怎样才能得到一些迹象表明是什么让我的应用程序崩溃了?
编辑:我现在知道这发生在调用之后,[NSEntityDescription
insertNewObjectForEntityForName:@"Entry"
inManagedObjectContext:[self managedObjectContext]];
并且它是由 TICoreDataSync 在此之前在我的核心数据存储上执行的方法引起的。我无法更改该代码,也无法将其从我的核心数据存储中移除。我认为这是在多个线程上访问商店的问题,所以现在我需要知道如何在主线程上处理这个问题?