核心数据崩溃

Posted

技术标签:

【中文标题】核心数据崩溃【英文标题】:Crash in core data 【发布时间】:2014-02-27 12:41:22 【问题描述】:

谁能帮我理解这个崩溃日志是什么意思?

0 CoreFoundation 0x314df29e __exceptionPreprocess + 158
1 libobjc.A.dylib 0x3918497a objc_exception_throw + 26
2 CoreFoundation 0x314e2e02 -[NSObject(NSObject) doesNotRecognizeSelector:] + 166
3 CoreFoundation 0x314e152c ___forwarding___ + 388
4 CoreFoundation 0x31438f64 __forwarding_prep_0___ + 20
5 CoreData 0x3128b9f8 -[NSSQLCore _prepareResultsFromResultSet:usingFetchPlan:withMatchingRows:] + 3004
6 CoreData 0x31288fa2 -[NSSQLCore _newRowsForFetchPlan:selectedBy:withArgument:] + 1274
7 CoreData 0x31282084 -[NSSQLCore newRowsForFetchPlan:] + 308
8 CoreData 0x3128173a -[NSSQLCore objectsForFetchRequest:inContext:] + 678
9 CoreData 0x31281200 -[NSSQLCore executeRequest:withContext:error:] + 464
10 CoreData 0x31280618 -[NSPersistentStoreCoordinator executeRequest:withContext:error:] + 1640
11 CoreData 0x3127ef12 -[NSManagedObjectContext executeFetchRequest:error:] +

编辑:这种崩溃很少发生。无法通过断点重新生成。

【问题讨论】:

您为什么认为这是核心数据问题? 你知道执行的fetch请求,异常信息(选择器是什么)吗? 我还没有,然后打开异常断点。它将帮助您追踪根本原因。 @Damir179 :这种情况很少发生。 @Karthik207 为 onThrow 和 onCatch 添加异常断点.. 然后运行您的代码.. 【参考方案1】:

我会说第 2 行是最好的指标:

2 CoreFoundation 0x314e2e02 -[NSObject(NSObject) doesNotRecognizeSelector:] + 166

第 5 行中对 _prepareResultsFromResultSet:usingFetchPlan:withMatchingRows: 的调用似乎被发送到不应该发送到的地方。

【讨论】:

以上是关于核心数据崩溃的主要内容,如果未能解决你的问题,请参考以下文章

核心数据崩溃不可变对象

删除后尝试保存时核心数据崩溃

核心数据崩溃

这次核心数据崩溃的可能原因是啥

关系保存时核心数据崩溃

核心数据导致 iPhone 崩溃