0

テスターは、満たすことができなかった (anNSObjectInaccessibleExceptionがスローされた) Core Data 障害が原因で、(iOS) アプリが起動時にクラッシュする状況に遭遇しました。アプリケーションが最初に行うことは、テーブル ビューに管理対象オブジェクトを設定することであるため、アプリケーションは起動時に引き続きクラッシュします。

質問は簡単です。テスターが少なくともデータを失うことなくアプリケーションを使い続けることができるように、この問題をどのように解決できますか?

この質問にもう少しコンテキストを提供するために、テーブル ビュー セルが次のように構成されていると、アプリケーションがクラッシュします。このメソッドは から呼び出されtableView:cellForRowAtIndexPath:ます。

- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {
    // Fetch Store
    CCDStore *store = [self.fetchedResultsController objectAtIndexPath:indexPath];

    // Configure Cell
    [cell.textLabel setText:[store name]]; // Exception is thrown due to Core Data fault
    [cell.detailTextLabel setText:[store numberOfLists]];
}

デバイスまたは (SQLite) データベースにアクセスできないため、データベースの一部に破損したデータが含まれているため、エラーが発生したと推測されます。

4

2 に答える 2

0

アプリで障害が発生する場合、通常はNSManagedObjectContext. がNSManagedObjectコンテキストから「取得」され、コンテキストが解放されると、オブジェクトはメモリを解放するために障害を発生させます。したがって、コンテキストが存在するかどうかを確認すると、それが問題であるかどうかがわかります。そうである場合は、必ず正しい方法で保持してください (ARC を使用する場合は、クラスのインターフェース ファイルでコンテキストを宣言します。

于 2013-05-06T08:33:27.130 に答える
0

これが理想的ではないことは承知してい@try / @catchますが、問題のある前後の行を追加し、キャッチで障害を処理することで、アプリのクラッシュを防ぐことができます。

于 2013-12-12T18:09:59.407 に答える