我使用NSFetchedResultsController
表示表视图数据时Execution_BAD-ACCESS。现在,当数据从服务器到达时,我需要删除sqlite数据库中的所有数据。现在删除数据
当我删除数据库中的数据使用下面的代码给它有时崩溃(并不总是)给这个错误:
Execution_BAD-ACCESS (code=2, address=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];
我检查throughly现在我发现,当我访问次数的DetailPageController并返回(使用UINavigationController的popNavigationController :),然后如果我WIST DetailPageController那么它崩溃这个问题来了。
给予以下errror - [DetailPageController controllerWillChangeContent:]:消息发送到释放的实例0x11f52a90 *
问题是NSManageObjectContext的。所以修复程序总是使用NSManageObjectContext的新创建对象,否则会产生问题。
执行不良访问通常意味着对象已被提前释放。您的应用程序委托中定义的moc属性如何? – occulus 2013-03-16 09:09:55
现在请检查 – 2013-03-16 09:35:58
有点晚了,但加入我的2cents。确保在uiviewcontroller的dealloc方法中将提取结果控制器的委托设置为nil。 – user281300 2014-12-23 13:59:07