删除核心数据中的单行不起作用

Posted

技术标签:

【中文标题】删除核心数据中的单行不起作用【英文标题】:Deleting a single row in Core Data not working 【发布时间】:2013-08-14 04:01:30 【问题描述】:

我正在尝试制作一个日志应用程序,并且正在从 Core Data 中删除条目。当我尝试删除一个对象时,什么也没有发生,没有错误消息,什么都没有,并且该条目仍然存在并且没有被删除。代码:

- (void)deleteButtonPressed:(UIButton *) button 
    NSLog(@"Button Pressed");
    NSLog(@"%i", button.tag);

    UIView *viewToRemove = [self.view viewWithTag:button.tag];
    [viewToRemove removeFromSuperview];

    UIView *secondViewToRemove = [self.view viewWithTag:button.tag];
    [secondViewToRemove removeFromSuperview];

    UIView *thirdViewToRemove = [self.view viewWithTag:button.tag];
    [thirdViewToRemove removeFromSuperview];

    UIView *fourthViewToRemove = [self.view viewWithTag:button.tag];
    [fourthViewToRemove removeFromSuperview];

    JournalrAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

    NSManagedObjectContext *context = [appDelegate managedObjectContext];

    NSEntityDescription *entityDesc = [NSEntityDescription entityForName:@"Entrys" inManagedObjectContext:context];

    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    [request setEntity:entityDesc];

    NSManagedObject *matches = nil;
    NSError *error;
    NSArray *objects = [context executeFetchRequest:request error:&error];

    matches = objects[1];
    [context deleteObject:matches];

    if (![context save:&error]) 
        NSLog(@"Can't Delete! %@ %@", error, [error localizedDescription]);
        return;
    

【问题讨论】:

也许我遗漏了一些东西,但是您调用 removeFromSuperview 的所有四个视图都是相同的。那有什么意义呢? 您是否检查过它在获取请求中返回的内容。它实际上是否返回了您要删除的对象? @Abizern 我有用于 uilabel 背景的 uiimage、用于条目的 uilabel、一个日期 uilabel 和一个用于删除条目的取消按钮 @ophychius 最好的方法是什么 @user2489946 但是您使用相同的调用[self.view viewWithTag:button.tag] 获取每个视图,该调用返回相同的对象。 【参考方案1】:

也许是因为这行:

matches = objects[1];

数组是零索引的。那么也许您正在寻找第一个元素(objects[0])? 做一些 NSLogs 看看是否真的有要删除的东西。

另外,如果您希望视图中出现某种视觉更新,请不要这样做。您必须手动更新视图以反映数据库中的更改。

【讨论】:

以上是关于删除核心数据中的单行不起作用的主要内容,如果未能解决你的问题,请参考以下文章

删除核心数据条目不起作用

swift 3中的核心数据轻量级迁移不起作用

在子上下文中保存核心数据不起作用

核心数据到 SQL 不起作用

核心数据 NSPredicate 不起作用[重复]

核心数据自动迁移不起作用