我正在使用NSFetchedResultsController
. 现在,当数据从服务器到达时,我需要删除 sqlite 数据库中存在的所有数据。
现在,当我使用下面给出的代码从数据库中删除数据时,它有时会崩溃(并非总是如此)并给出此错误:
Execution_BAD-ACCESS(代码=2,地址=0x0)
在这条线上
if (![moc save:&saveError]) {
。H
@property (readonly, retain, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, retain, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, retain, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
.m
@synthesize managedObjectContext = _managedObjectContext;
@synthesize managedObjectModel = _managedObjectModel;
@synthesize persistentStoreCoordinator = _persistentStoreCoordinator;
NSManagedObjectContext *moc = [delegate managedObjectContext];
NSFetchRequest * allCategories = [[NSFetchRequest alloc] init];
[allCategories setEntity:[NSEntityDescription entityForName:@"Categories" inManagedObjectContext:moc]];
[allCategories setIncludesPropertyValues:NO]; //only fetch the managedObjectID
NSError * error = nil;
NSArray * dataArray = [moc executeFetchRequest:allCategories error:&error];
//error handling goes here
[NSFetchedResultsController deleteCacheWithName:@"RootDetail"];
for (Categories *cat in dataArray) {
[moc deleteObject:cat];
}
NSError *saveError = nil;
if (![moc save:&saveError]) {
NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
}
[allCategories release];
我现在彻底检查,我发现当我访问 DetailPageController 并返回(使用 UINavigationController popNavigationController :) 时,这个问题就来了,然后如果我想要 DetailPageController,它就会崩溃。
给出以下错误 -[DetailPageController controllerWillChangeContent:]:消息发送到已释放实例 0x11f52a90 *
问题在于 NSManageObjectContext。所以修复总是使用新创建的 NSManageObjectContext 对象,否则会产生问题。