Ios 可能来自我可以访问的用户的CoreData崩溃';复制

Ios 可能来自我可以访问的用户的CoreData崩溃';复制,ios,swift,core-data,nsmanagedobjectcontext,Ios,Swift,Core Data,Nsmanagedobjectcontext,我的应用程序与Crashlytics连接在一起,大约9%的用户(接近1k)正在经历我无法复制的崩溃。在崩溃的特定行中,我将托管对象上下文传递给使用它查找数据的函数 使用依赖项注入,我能够用在AppDelegate中创建的托管对象上下文实例化我的主视图控制器。任何需要托管对象上下文的类都会从此主视图控制器中注入该上下文。下面是我在Crashlytics仪表板中得到的堆栈跟踪。任何帮助我找出我能做什么的人都会很感激 Crashed: com.apple.main-thread 0 MyAp

我的应用程序与Crashlytics连接在一起,大约9%的用户(接近1k)正在经历我无法复制的崩溃。在崩溃的特定行中,我将托管对象上下文传递给使用它查找数据的函数

使用依赖项注入,我能够用在AppDelegate中创建的托管对象上下文实例化我的主视图控制器。任何需要托管对象上下文的类都会从此主视图控制器中注入该上下文。下面是我在Crashlytics仪表板中得到的堆栈跟踪。任何帮助我找出我能做什么的人都会很感激

Crashed: com.apple.main-thread 0 MyApp 0x10008f47c specialized CalendarService.parseCalendarForMeetings(from : [EKEvent]?) -> [Meeting]? (CalendarService.swift:96) 1 MyApp 0x10006dbf4 specialized MeetingViewController.(launchCalendarService() -> ()).(closure #1) (MeetingViewController.swift:188) 2 MyApp 0x100071e64 partial apply for MeetingViewController.(launchCalendarService() -> ()).(closure #1) (MeetingViewController.swift) 3 MyApp 0x1000a5950 thunk (MeetingListMenuViewController.swift) 4 libdispatch.dylib 0x1806fabb8 _dispatch_block_async_invoke_and_release + 100 5 libdispatch.dylib 0x1806ee9a0 _dispatch_client_callout + 16 6 libdispatch.dylib 0x1806f35e8 _dispatch_main_queue_callback_4CF + 996 7 CoreFoundation 0x1817e50c8 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12 8 CoreFoundation 0x1817e2ce4 __CFRunLoopRun + 1572 9 CoreFoundation 0x181712da4 CFRunLoopRunSpecific + 424 10 GraphicsServices 0x18317d074 GSEventRunModal + 100 11 UIKit 0x1879cdc9c UIApplicationMain + 208 12 MyApp 0x10005b3cc main (AppDelegate.swift:27) 13 libdyld.dylib 0x18072159c start + 4
您可能正在经历竞争状况,并且受影响的用户倾向于使用更快或更慢的设备,这暴露了问题


您可以参考下面讨论添加调试设置以检查CoreData正在使用的线程的内容。如果操作发生在后台线程上,那么您可能会崩溃。

添加堆栈顶部跟踪引用的代码,并告诉我们CalendarService中的第96行是什么。Swifts因为您知道文件和行号,接下来要做的就是查看该代码,看看哪里可能出错,或者在导致它的代码中。如果您不确定,请使用该信息更新您的问题。根据这一点,任何人都可以说,该应用程序在CalendarService.swift:96崩溃,该应用程序是从MeetingViewController调用的。swift:188。更新了导致crashi添加此项的代码行,我看到核心数据冲突崩溃。以前从未听说过这个调试标志,所以谢谢你让我找到了正确的方向@iOShepherd很高兴听到这个消息,CoreData有时会成为一个雷区,但这是驯服它的一个很好的资产。所以我尝试使用persistentContainer.newBackgroundContext()修复代码,并导致崩溃,所以我切换回我的旧代码并检查了它,这次我没有遇到崩溃。。。因此,我的生产代码不包含任何冲突:/
let calendarUtil = CalendarUtility(title: event.title, location: event.location, notes: event.notes, managedObjectContext: managedObjectContext)