【发布时间】:2018-05-03 19:59:21
【问题描述】:
我的应用程序连接了 Crashlytics,大约 9% 的用户(接近 1k)遇到了我无法复制的崩溃。在崩溃的特定行中,我将托管对象上下文传递给使用它来查找数据的函数。
使用依赖注入,我能够使用在我的 AppDelegate 中创建的托管对象上下文来实例化我的主视图控制器。任何需要托管对象上下文的类都会从这个主视图控制器中注入它。下面是我在 Crashlytics 仪表板中获得的堆栈跟踪。任何帮助都可以帮助我弄清楚我能做什么。
崩溃:com.apple.main-thread 0 MyApp 0x10008f47c 专门 CalendarService.parseCalendarForMeetings(来自:[EKEvent]?)-> [会议]? (CalendarService.swift:96) 1 MyApp 0x10006dbf4 专门的 MeetingViewController.(launchCalendarService() -> ()).(closure #1) (MeetingViewController.swift:188) 2 MyApp 0x100071e64 部分申请 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 核心基础 0x1817e50c8 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12 8 核心基础 0x1817e2ce4 __CFRunLoopRun + 1572 9 核心基础 0x181712da4 CFRunLoopRunSpecific + 424 10 图形服务 0x18317d074 GSEventRunModal + 100 11 UIKit 0x1879cdc9c UIApplicationMain + 208 12 MyApp 0x10005b3cc 主 (AppDelegate.swift:27) 13 libdyld.dylib 0x18072159c 开始 + 4编辑:
这似乎是问题所在的代码行(每个堆栈跟踪的第 96 行)。 MOC 在 CalendarService 类和 CalendarUtility 类中不是可选的。
在 CalendarUtility 中,MOC 仅用于读取数据。
let calendarUtil = CalendarUtility(title: event.title, location: event.location, notes: event.notes, managedObjectContext: managedObjectContext)
【问题讨论】:
-
添加堆栈跟踪顶部引用的代码并告诉我们 CalendarService.swift 中的第 96 行是什么
-
既然您知道文件和行号,接下来您要做的就是查看该代码,看看那里或导致它的代码中可能出现的问题。如果您不确定,请使用该信息更新您的问题。基于此,任何人都可以真正说的是应用程序在 CalendarService.swift:96 处崩溃,它是从 MeetingViewController.swift:188 调用的。
-
更新了导致崩溃的代码行
标签: ios swift core-data nsmanagedobjectcontext