Я показываю данные в виде таблицы с использованием NSFetchedResultsController
. Теперь, когда данные поступают с сервера, мне нужно удалить все данные, присутствующие в базе данных sqlite.Execution_BAD-ACCESS при удалении данных
Теперь, когда я удалить данные из базы данных по заданным ниже коде иногда падает (не всегда) дает эту ошибку:
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];
проверяет тщательно теперь я обнаружил, что эта проблема приходит, когда я Вист на DetailPageController и вернуться (используя UINavigationController popNavigationController :), а затем, если я не знал DetailPageController то он выходит из строя.
дает следующие errror - [DetailPageController controllerWillChangeContent]: сообщение, отправленное высвобождены например 0x11f52a90 *
Проблема состоит в NSManageObjectContext. Таким образом, исправление всегда использует новый созданный объект NSManageObjectContext, иначе он создаст проблемы.
Выполнение плохого доступа обычно означает, что объект был освобожден досрочно. Как ваше свойство moc определено в вашем делете приложения? – occulus
Проверьте сейчас, пожалуйста, –
Немного поздно, но добавив свои 2центы. Убедитесь, что делегат для контроллера результата выборки вернулся к нулю в методе dealloc вашего uiviewcontroller. – user281300