【问题标题】:iOS Core Data - Deletes not reflected until App RestartiOS 核心数据 - 删除直到 App Restart 才会反映
【发布时间】:2011-06-22 17:08:25
【问题描述】:

我在第二个线程上成功添加和更新核心数据中的记录,没有问题。

但是,在我停止并重新启动应用程序之前,删除似乎不会生效。所以删除显然在一定程度上起作用。我在加载 tableview 之前读取了数据,并且在删除时没有做任何不同的事情。

我使用的代码是

....fetch records....
BOOL deleteGem = FALSE;
if ([[attributeDict objectForKey:@"headline"] hasPrefix:@"VOID"])
    deleteGem = TRUE;

    if ([mutableFetchResults count] == 0) {
    // not there so create a new one    
        if (!deleteGem) {
            // so create a new one unless it needs deleting
            gem = (Gem *)[NSEntityDescription insertNewObjectForEntityForName:@"Gem" inManagedObjectContext:managedObjectContext];
            [gem setID:[attributeDict objectForKey:@"ID"]];
        }
    } else {

        // already exists so either get it and then update or delete it
        gem = [mutableFetchResults objectAtIndex:0];

        if (deleteGem) {
            // delete it if required
            [managedObjectContext deleteObject:gem];
            gemDeletes ++;
        }
    }
    .....

稍后我有一种方法可以保存任何更新,包括:

    NSError *error;
    if (![self.managedObjectContext save:&error]) { 
    ....

热烈欢迎任何想法...

编辑 - 根据@TechZen 的回答提供完整答案..


在 viewDidLoad 的第二个线程上注册更新通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleSaveNotification:) name:NSManagedObjectContextDidSaveNotification object:nil];

在 viewDidUnload 中取消注册通知

[[NSNotificationCenter defaultCenter] removeObserver:self name:NSManagedObjectContextDidSaveNotification object:nil];

在主线程中处理更新(视图控制器中的新方法)

-(void)handleSaveNotification:(NSNotification *)aNotification {
    [managedObjectContext mergeChangesFromContextDidSaveNotification:aNotification];
}

【问题讨论】:

  • 好吧,把我弄糊涂了。您是直接从 coreData 显示 tableView 中的数据还是将其缓冲在 NSArray/NSDictionary 中?如果您正在缓冲,您是否从 NSArray/NSDictionary 中删除该项目?
  • 不,我在一个数组中缓冲,但我刷新了这个,它适用于插入和更新。

标签: iphone core-data ios4


【解决方案1】:

如果您希望在后台上下文中所做的更改显示在前台上下文中,则必须将后台上下文与前台上下文合并。

【讨论】:

    猜你喜欢
    • 2014-08-30
    • 2017-03-20
    • 2017-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    相关资源
    最近更新 更多