我尝试从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, 它在一个视图上的一组数据上工作得很好,并尝试从另一个视图中删除另一组数据,但它没有删除。
有人能解决这个问题吗?
答案 0 :(得分:0)
两个愚蠢的问题:
你确定它正在进入你的循环吗?
您是否在所有删除后对上下文执行了保存?
答案 1 :(得分:0)
您可能希望删除托管对象而不是实体(对于Core Data中的对象更像是类或“模板”)。
为此,您必须使用deleteObject:
的{{1}}方法。