如何从 Core Data 中删除数据

Posted

技术标签:

【中文标题】如何从 Core Data 中删除数据【英文标题】:How to delete data from Core Data 【发布时间】:2011-12-10 07:30:35 【问题描述】:

我尝试从 Core Data 中删除具有两个实体的实体 1. 根目录 2.子类

并且 RootCategory 可能有一些 ChildCategory 作为它的父级,而 ChildCategory 可能有一些 RootCategory 作为它的父级,同时尝试使用以下内容进行删除:

-(void)deleteCategory:(NSInteger)caterogyId

    NSManagedObjectModel *dataModel = [self dataModel];

    //    NLog(@"%@", TO_JSON(@"results", results, nil));
    RootCategory *rootCategory = (RootCategory *) [dataModel fetchOne:CD_RootCategory
                                                                  predicate:@"categoryId == %d and parentChildCategory
 == nil", categoryId];
    if ( rootCategory.childCategorys.count != 0 ) 
        // delete everything from under the leaves in this category

        for ( ChildCategory *childCategory in rootCategory.childCategorys ) 
            for ( RootCategory *rootCategory in childCategory.childRootCategory )
                [dataModel deleteEntity:rootCategory];

        
    

相应的记录不会从 Core Data DB 中删除。 为什么会发生这种情况,我从两种方式调用这个 deleteEntity, 它适用于一个视图上的一组数据,并试图从另一个视图中删除另一组数据但它没有删除。

谁能解决这个问题?

【问题讨论】:

【参考方案1】:

两个愚蠢的问题:

    您确定它正在进入您的循环?

    您在所有删除后对上下文执行了保存?

【讨论】:

【参考方案2】:

您可能想要删除托管对象而不是实体(它们更像是 Core Data 中对象的类或“模板”)。

为此,您必须使用NSManagedObjectContextdeleteObject: 方法。

【讨论】:

如果你保存上下文,它本质上是一样的。 不,这绝对不是一回事,与保存上下文无关。 你能解释一下区别吗?因为我真的很想知道。

以上是关于如何从 Core Data 中删除数据的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Core Data 中删除具有特定属性的项目?

如何在 Swift 中从 Core Data 中删除数据时删除 UITableView 行?

删除应用程序时是不是会从设备中删除 Core Data 数据库?

RestKit / Core Data:远程删除的实体不会从 Core Data 中删除

从 Core Data iOS 8 中删除二进制数据

Core Data:如何删除和重建数据存储?