0

假设我通过 Core Data 加载了 1,000 个对象,每个对象都有一个用户可设置的Favorite布尔值。它默认适用NO于所有对象,但用户可以随意翻动,将其设置为任意YES数量。我希望我的设置页面中有一个按钮来为每个对象重置该Favorite状态。NO

最好的方法是什么?我可以以某种方式遍历该实体的每个实例,将其设置回来吗?(顺便说一句,“实例”是指某个实体的对象的正确词吗?)这里有更好的方法吗?我不想从它的初始源重新加载数据,因为那里的其他东西可能已经改变:它不是完全重置,只是一个“Mass Unfavourite”选项。

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 回答