Ios 更新NSManagedObjectContext 请考虑这个问题的结尾处的方法。它尝试从CoreData实体中删除所有记录
第一部分很好:它从我的上下文中删除所有内容,然后保存上下文 第二个未注释的部分似乎不起作用: 作为一个测试,我做了Ios 更新NSManagedObjectContext 请考虑这个问题的结尾处的方法。它尝试从CoreData实体中删除所有记录,ios,objective-c,core-data,Ios,Objective C,Core Data,第一部分很好:它从我的上下文中删除所有内容,然后保存上下文 第二个未注释的部分似乎不起作用: 作为一个测试,我做了 NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"myEntity"]; NSError *error = nil; NSArray *results = [self.managedObjectContext executeFetchRequest:request error
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"myEntity"];
NSError *error = nil;
NSArray *results = [self.managedObjectContext executeFetchRequest:request error:&error];
NSLog(@"Fetch request returns %lu objects", (unsigned long)[results count]);
当我使用下面的方法添加记录并删除所有记录时,记录的数量只会增加
据我所知,它实际上是有效的,但是上下文还没有意识到它
因此,为了获得可靠的上下文,我应该使用
[NSManagedObjectContext mergeChangesFromRemoteContextSave:<#(nonnull NSDictionary *)#> intoContexts:self.managedObjectContext];
您确实使用batchDeleteRequest在上下文中调用了
executeRequest
,不是吗?您确实使用batchDeleteRequest在上下文中调用了executeRequest
,不是吗?
- (void)deleteAllEntities:(NSString *)nameEntity
{
id appDelegate = (id)[[UIApplication sharedApplication] delegate];
self.managedObjectContext= [appDelegate managedObjectContext];
/*
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:nameEntity];
[fetchRequest setIncludesPropertyValues:NO]; //only fetch the managedObjectID
NSError *error;
NSArray *fetchedObjects = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
for (NSManagedObject *object in fetchedObjects)
{
[self.managedObjectContext deleteObject:object];
}
error = nil;
[self.managedObjectContext save:&error];
*/
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:nameEntity];
NSBatchDeleteRequest *delete = [[NSBatchDeleteRequest alloc] initWithFetchRequest:request];
NSError *deleteError = nil;
}