2

私はコアデータが初めてです。
1.コアデータで作成された対応するエンティティにデータを入力して保存するメインビューコントローラーがあります。
2. 次に、ユーザーが入力したデータをまとめて表示する tableview(totalTableView) コントローラーがあります。この後、
3. 当日のみ入力されたデータを表示する別の tableview (todaysTableView) があります。

すべてナビコントローラーで接続。todaysTableView からオブジェクトを削除すると、それ自体が消えますが、totalTableView に戻ると、オブジェクトはまだそこにあります。また、メインビューコントローラー(ホーム画面)に戻ってtotalTableViewに移動すると、削除されたオブジェクトはそこになく、クリアされて完璧になりました。削除後にすぐに totalTableView に戻ったときにクリアされないのはなぜですか。
私のViewControllerの流れはこのようなものです

mainViewController-->totalTableView-->todaysTableView

これがtodaysTableView m.fileの私のコードで、オブジェクトIDでオブジェクトを削除します

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

{

NSManagedObjectContext *managedObjectContext = [self managedObjectContext];

if (editingStyle == UITableViewCellEditingStyleDelete) {

    // Delete the row from the data source


    [managedObjectContext deleteObject:[managedObjectContext objectWithID:moID]];

    [managedObjectContext save:nil];

    NSLog(@"object id check %@",moID);

    NSError *error = nil;

    if(![managedObjectContext save:&error])

    {
        NSLog(@"deleting error");

        return;
    }

    [self.todaysCategory removeObjectAtIndex:indexPath.row];

    [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:(UITableViewRowAnimationFade)];

    [self.tableView endUpdates];

}

誰かがこれを修正するために私を導くことができれば. 前もって感謝します

4

1 に答える 1

2

TotalTableView は、メモリ内にいくつかの NSManagedObjects を保持し、初期化時にフェッチします。コア データには、オブジェクトが削除されたときに totalTableView に通知するメカニズムがありますが、それらを使用する必要があります。

totalTableView がオブジェクトを削除するときにオブジェクトを表示から削除するには、NSManagedObjectContextObjectsDidChangeNotification に応答する必要があります。これを受け取るためにデフォルトの通知センターに登録すると、オブジェクトが変更されたときにコンテキストによって通知されます。

[[NSNotificationCenter defaultCenter] addObserverForName:NSManagedObjectContextObjectsDidChangeNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification* notification) {
    // Either reload your data, or respond case by case.
}];

ドキュメントから:通知オブジェクトは管理対象オブジェクトのコンテキストです。userInfo ディクショナリには、NSInsertedObjectsKey、NSUpdatedObjectsKey、および NSDeletedObjectsKey のキーが含まれています。

于 2013-05-07T15:41:01.917 に答える