0

Core Dataを介して1,000個のオブジェクトをロードし、それぞれにユーザー設定可能なFavoriteブール値があるとします。デフォルトでNOはすべてのオブジェクトに対して設定されていますが、ユーザーは自由に移動してYES、好きなだけ設定できます。[設定]ページのボタンで、すべてのオブジェクトのFavoriteステータスをリセットしたいと思います。NO

それを行うための最良の方法は何ですか?なんらかの方法でそのエンティティのすべてのインスタンスを反復処理して、元に戻すことはできますか?(ちなみに、「インスタンス」は特定のエンティティのオブジェクトを指す正しい単語ですか?)ここでより良いアプローチはありますか?最初のソースからデータをリロードしたくないのは、そこにある他のものが変更されている可能性があるためです。これは完全なリセットではなく、「大量のお気に入り」オプションだけです。

4

1 に答える 1

0

さて、動作するようになりましたが、何らかの理由でアプリを再起動する必要があります. 私はこれをやっています:

- (IBAction) resetFavourites: (id) sender
{
    NSFetchRequest *fetch = [[NSFetchRequest alloc] init];
    [fetch setEntity: [NSEntityDescription entityForName: @"Quote" inManagedObjectContext: [[FQCoreDataController sharedCoreDataController] managedObjectContext]]];
    NSArray *results = [[[FQCoreDataController sharedCoreDataController] managedObjectContext] executeFetchRequest: fetch error: nil];
    for (Quote *quote in results) {
        [quote setIsFavourite: [NSNumber numberWithBool: NO]];
    }

    NSError *error;
    if (![self.fetchedResultsController performFetch: &error]) {
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }
    [self.tableView reloadData];
}

アプリを閉じて再度開くとうまくいきますが、すぐには反映されません。それはreloadDataすべきことではありませんか?すぐにリフレッシュを引き起こしますか? 私はそこに何か欠けていますか?

于 2013-02-25T19:18:28.693 に答える