在单独的帖子中,删除prepareForDeletion
时会调用session
。然后,在主线程中,main调用prepareForDeletion
。
第一次调用prepareForDeletion
时,所有属性都在那里,正如预期的那样。但是,第二次,都是零。因此,我需要prepareForDeletion
的原因导致我的应用程序崩溃,因为当它们不期望删除时值为零。
我有一个CalendarService
,可以监听事件存储iCal中所做的更改。发布此通知后,CalendarService
会更新所有Sessions
,以确保它们不会过时或删除其活动。
func updateStaleSessions
就是这样
privateContext
session.eventId
查找关联的日历活动
privateContext
privateContext
updateStaleSessions
通知后,使用OperationQueue
调用 eventStoreDidChange
privateContext
的创建方式如下:
let moc = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
moc.persistentStoreCoordinator = PersistanceStack.persistentContainer.persistentStoreCoordinator
return moc
这是我崩溃时的调用堆栈
我只是试图从主线程中实现这个updateStaleSessions
,所以我应该采取不同的做法,我愿意尝试:)