如何从 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 中对象的类或“模板”)。
为此,您必须使用NSManagedObjectContext
的deleteObject:
方法。
【讨论】:
如果你保存上下文,它本质上是一样的。 不,这绝对不是一回事,与保存上下文无关。 你能解释一下区别吗?因为我真的很想知道。以上是关于如何从 Core Data 中删除数据的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 中从 Core Data 中删除数据时删除 UITableView 行?
删除应用程序时是不是会从设备中删除 Core Data 数据库?