まず第一に、この質問のより良いタイトルを見つけることができず申し訳ありません。
これは私自身を繰り返すことはできませんが、ユーザーに何度も起こったクラッシュです。HockeyApp(QuincyKit)を使用してクラッシュレポートを収集しています。したがって、この問題をデバッグすることはできません。コールスタックを読み取ることしかできません。しかし、私はそれを読んだ後、何が悪いのかについての手がかりを持っていません。途中で無関係な関数呼び出しをいくつか省略しました。
UI部分については、を使用NSFetchedResultsController
してデータを入力しUITableView
ます。
Core Dataの部分では、iOS 5で新しく導入された親子MOCを使用しています。メインキューには親MOC、リソースフェッチキューには子MOCです。フェッチしたデータを処理した後、子MOCを保存します。子MOCを保存するとすぐに、変更はCore Dataによって自動的に親MOCにプッシュされ、FRCは変更を確認し、デリゲートを介してテーブルビューを更新する必要があります。次に、メインスレッドにコールバックして、追加のUI更新を行います。
[UITableView indexPathForRowAtPoint:]
具体的には、どのように呼び出されたかは理解できます[NSFetchedResultsController objectAtIndexPath:]
が、なぜそれが最終的に自分のエンティティに呼び出されたのinitWithEntity:insertIntoManagedObjectContext:
か、なぜinitWithEntity:insertIntoManagedObjectContext:
満たされない障害が発生するのかはわかりません。[NSFetchedResultsController objectAtIndexPath:]
やるべきだと思いますが、ここfetch
でやったのinsert
です。
Exception Type: SIGABRT
Exception Codes: #0 at 0x35e7e32c
Crashed Thread: 0
Application Specific Information:
*** Terminating app due to uncaught exception 'NSObjectInaccessibleException', reason: 'CoreData could not fulfill a fault for '0xe62bdc0 <x-coredata://327F5799-CAB1-4086-8E75-0E87F0E19BF0/Status/p385>''
Last Exception Backtrace:
0 CoreFoundation 0x355c888f __exceptionPreprocess + 162
1 libobjc.A.dylib 0x3796f259 objc_exception_throw + 32
2 CoreData 0x35f124f3 _PFFaultHandlerLookupRow + 1098
3 CoreData 0x35f11d5b _PF_FulfillDeferredFault + 194
4 CoreData 0x35f11c0b _sharedIMPL_pvfk_core + 38
5 XXX 0x0008a5c3 -[Tweet initWithEntity:insertIntoManagedObjectContext:] (Tweet.m:125)
6 XXX 0x0003fd1b -[Status initWithEntity:insertIntoManagedObjectContext:] (Status.m:333)
7 CoreData 0x35f0eded -[NSManagedObject(_NSInternalMethods) _initWithEntity:withID:withHandler:withContext:] + 164
8 CoreData 0x35f0de07 -[NSManagedObjectContext(_NSInternalAdditions) _retainedObjectWithID:optionalHandler:withInlineStorage:] + 134
9 CoreData 0x35f6b6eb _PFRetainedObjectIDCore + 330
10 CoreData 0x35f67065 -[NSManagedObjectContext objectWithID:] + 88
11 CoreData 0x35f32c09 _faultBatchAtIndex + 1352
12 CoreData 0x35f31e73 -[_PFBatchFaultingArray objectAtIndex:] + 42
13 CoreData 0x35f30a87 -[_PFMutableProxyArray objectAtIndex:] + 82
14 CoreData 0x35fdd81d -[NSFetchedResultsController objectAtIndexPath:] + 204
16 XXX 0x0009ebab -[TweetsViewController tableView:heightForRowAtIndexPath:] (TweetsViewController.m:581)
17 UIKit 0x3304dab5 -[UISectionRowData refreshWithSection:tableView:tableViewRowData:] + 2548
18 UIKit 0x33067c3b -[UITableViewRowData rectForSection:] + 302
19 UIKit 0x33125981 -[UITableViewRowData indexPathsForRowsInRect:] + 136
20 UIKit 0x331258f1 -[UITableView indexPathsForRowsInRect:] + 52
21 UIKit 0x33125889 -[UITableView indexPathForRowAtPoint:] + 28
22 XXX 0x0009c193 -[TweetsViewController updateUI] (TweetsViewController.m:211)
25 XXX 0x00111a6f __block_global_1 (ResourceFetcher.m:68)
26 libdispatch.dylib 0x34458b87 _dispatch_barrier_sync_f_slow_invoke + 82
27 libdispatch.dylib 0x34457ee7 _dispatch_main_queue_callback_4CF$VARIANT$mp + 194
28 CoreFoundation 0x3559b2ad __CFRunLoopRun + 1268
29 CoreFoundation 0x3551e4a5 CFRunLoopRunSpecific + 300
30 CoreFoundation 0x3551e36d CFRunLoopRunInMode + 104
31 GraphicsServices 0x371ba439 GSEventRunModal + 136
32 UIKit 0x3302acd5 UIApplicationMain + 1080
33 XXX 0x000044ff main (main.m:16)
34 XXX 0x00003c50 start + 40
このクラッシュの問題を抱えているユーザーは通常、クラッシュの直前にテーブルビューがセル全体から空に変わるのを目にします。これは重要なヒントだと思いますが、すべてのデータが突然失われる理由は考えられません。データベースファイルを移動または削除するためのコードがありません。