2017-11-20 11 views
1

私のアプリケーションはクラッシュスティックスに接続されており、ユーザーの約9%(1kに近い)がクラッシュしているため、複製できません。クラッシュしている特定の行では、マネージオブジェクトコンテキストをデータ検索に使用する関数に渡しています。可能なCoreDataが再現できないユーザーからクラッシュする

依存性注入を使用して、私の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 

EDIT:

これは問題であると思われるコード(スタック・トレース当たり96ライン)のラインです。 MOCは、CalendarServiceクラスまたはCalendarUtilityクラスではオプションではありません。

CalendarUtilityの内部では、MOCはデータの読み取り専用です。

let calendarUtil = CalendarUtility(title: event.title, location: event.location, notes: event.notes, managedObjectContext: managedObjectContext) 
+0

スタックトレースの先頭が参照するコードを追加し、CalendarService.swift内の96行を教えてください –

+2

ファイルと行番号を知っているので、次はそのコードを見て、間違っているか、それにつながるコードに行きます。わからない場合は、その情報で質問を更新してください。誰でも本当にこれに基づいて言うことができるのは、MeetingViewController.swift:188から呼び出されたCalendarService.swift:96でアプリがクラッシュしたことです。 –

+0

クラッシュを引き起こすコード行で更新しました – iOShepherd

答えて

1

あなたが競合状態が発生していること、および影響を受けるユーザーが問題を公開して速くなったり遅くデバイスを持っている傾向にあることも可能です。

次のSO postを参照して、CoreDataが使用しているスレッドを確認するデバッグ設定を追加する方法について説明します。アクションがバックグラウンドスレッドで発生している場合は、クラッシュする可能性があります。

+0

私はこれを追加しました。コアデータ違反のクラッシュが発生しています。前もってこのデバッグフラグを知らなかったので、正しい方向に私を得ることに感謝します! – iOShepherd

+0

@iOShepherd聞いてよかったですが、CoreDataは時には地雷原になることがありますが、それはそれを克服するための大きな資産です。 – CodeBender

+0

私はpersistentContainer.newBackgroundContext()を使用してコードを修正しようとしましたが、クラッシュしましたので、古いコードに切り替えて、今回はクラッシュしませんでした...私の生産コードには含まれていません任意の違反:/ – iOShepherd

関連する問題