【发布时间】:2021-09-10 00:43:25
【问题描述】:
在一些崩溃报告中观察到了这种崩溃,但没有直接得到它。我在 SO 上分析了很多类似的事情,但无法就问题得出结论。以下是崩溃日志中的几张图片:
class CoreDataProvider: NSObject, NSFetchedResultsControllerDelegate {
static let sharedList: CoreDataProvider = CoreDataProvider()
static let sharedDataManager: CoreDataManager = CoreDataManager()
var isListObject: Bool = false
var fetchedConversationResultsController: NSFetchedResultsController<NSFetchRequestResult>?
func controller(_ controller: NSFetchedResultsController<NSFetchRequestResult>, didChange anObject: Any, at indexPath: IndexPath?, for type: NSFetchedResultsChangeType, newIndexPath: IndexPath?) {
if let object = anObject as? NSManagedObject, type == NSFetchedResultsChangeType.insert {
if controller == fetchedConversationResultsController{
CoreDataManager.sharedInstance.threadCoreBG.async { [weak self] in
**self?.fetchedConversationResultsController?.managedObjectContext.insert(object)**
}
}
}
}
}
基本上崩溃是在上面突出显示的行中指出的。 其中 threadCoreBG 是:
var threadCoreBG: DispatchQueue = DispatchQueue(label: "coreDataThread", qos: .background)
我怀疑一切都是可选的,如果是这种情况,它是如何插入 nil 对象的,或者我无法得出问题的结论。
【问题讨论】: