2017-02-14 30 views
0

私のアプリでは、Mapkitの値を持つテーブルビューを持っています。私はテーブルを編集することができます、行を削除しますが、アプリが起動すると、同じ削除された行はまだそこに....私はこれを修正することはできますか?編集のコード:行/コアデータを削除できません

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 
if (editingStyle == UITableViewCellEditingStyleDelete) { 

    [_locations removeObjectAtIndex:[indexPath row]]; 

    [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; 

    [tableView reloadData]; 
} 

ヒントはありますか?ありがとうございます

+0

手順で実装デリゲートのコールバックを自動的に行われますが、あなたはスタックコアデータでも、オブジェクトを削除して保存する必要があります文脈 – vadian

+0

データベースからオブジェクトを削除していない可能性があります。 [NSManagedObjectContext deleteObject:]を使用して保存します。 –

+0

このすべて私は編集テーブルの方法で実装する必要がありますか? – FuManchu

答えて

0
  1. NSFetchedResultsControllerを使用してコアデータからデータを読み込みます。
  2. 変更が発生したときにビューを更新するためにデリゲート関数を実装します。
  3. 削除すると、ブロックはコアデータから削除されます。 (NSPersistentContainerを使用している場合はperformBackgroundTask:を使用してください)。
  4. ビューを更新しないでください。これは、あなたが** ** deleteRowsAtIndexPaths` ``後reloadData`を呼び出すことはできません2.
+0

'performBackgroundTask(_ :)'の渡されたプライベート 'context'に対して' save() 'を呼び出すとNSFetchedResultsControllerが更新されません:http://stackoverflow.com/a/42279670/6793476 – Tobi

+0

あなたのコアで –

+0

もちろん、デフォルトでは 'いいえ 'なので、' save() 'は' viewContext'を更新せず、 'NSFetchedResultsController'も通知しません。私はこれがあなたの答えに追加されるべきだと思っただけです。 – Tobi

関連する問題