如何从Core Data中删除数据

时间:2011-12-10 07:30:35

标签: iphone objective-c xcode core-data

我尝试从Core Data中删除具有两个名为的实体的实体 1. RootCategory 2. ChildCategory

和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, 它在一个视图上的一组数据上工作得很好,并尝试从另一个视图中删除另一组数据,但它没有删除。

有人能解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

两个愚蠢的问题:

  1. 你确定它正在进入你的循环吗?

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

答案 1 :(得分:0)

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

为此,您必须使用deleteObject:的{​​{1}}方法。