1

パスと FB スタイルの UI に ECSlidingViewController を使用しています。2 つの UITableViews。1 つ (詳細) はメイン ビューとして表示され、2 つ目 (マスター) はサイドメニューとして表示されます。どちらも Core Data を利用しています。

サイドメニューの UITableView で親テーブルの行を削除すると、ハード クラッシュが発生しますが、削除時に詳細ページに親行の子が表示されている場合のみです。他のすべての行は期待どおりに削除されます。

行の削除は次のように処理されます。

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        [self.managedObjectContext deleteObject:[self.fetchedResultsController objectAtIndexPath:indexPath]];
    }
}

ログに次のエラーが表示されます。

CoreData: エラー: 重大なアプリケーション エラーです。コア データの変更処理中に例外がキャッチされました。これは通常、NSManagedObjectContextObjectsDidChangeNotification のオブザーバー内のバグです。無効な更新: セクション 0 の行数が無効です。更新後の既存のセクションに含まれる行数 (0) は、更新前にそのセクションに含まれる行数 (3) にプラスまたはマイナスの数値を指定する必要があります。そのセクションに挿入または削除された行数 (0 挿入、1 削除)、およびそのセクションに移動した行数またはそのセクションから移動した行数 (0 移動、0 移動)。userInfo (ヌル)

それdelete ruleが役立つ場合は、無効化に設定されていますか?

Core Data が NSFetchedResultsController から一度にすべての子を削除していて、UITableVIew がすべて混乱していると思いますか?

クラッシュせずに親と子の NSManagedObjects を削除するにはどうすればよいですか?

4

1 に答える 1

0

コードを何度も調べたところ、ネストされていて[self.tableView beginUpdates]同期[self.tableView endUpdates]が取れていないことがわかり、endUpdates を 2 回続けて呼び出していました。

私はこのアプリを開発している今、これを何度も打っています。このチェックのようなクラッシュがあり、CS193P コースの CoreDataTableViewController を使用している可能性がある場合は、beging と end の更新の使用を確認してください。

于 2013-05-14T08:07:24.543 に答える