2015-06-18 3 views
0

Я работаю с основными данными в своем приложении. В этом я использую функцию ниже для удаления и вставки данных в таблицу базы данных основных данных. Он работает отлично в первый раз. Когда я звоню во второй раз, он выбрасывает EXC BAD ACCESS. Может кто поможет решить эту проблему.Вызов метода NSManagedObject вызывает EXC BAD ACCESS

@implementation abc 

@synthesize delegate; 

Dynamic *dbObjDynamic; 



-(void) callingcoredata:(NSInteger) family type:(NSInteger) type List:(NSString *) list 
{ 
if ([AppManager getAppMode] == Online) 
{ 
     statdyn = type; 

     arrDyanmic= [[NSMutableArray alloc]init]; 
     dbObjDynamic = [[Dynamic alloc]init]; 

     [dbObjDynamic DeleteRecordControlsFromTable:listtype]; 
} 
} 

В Dynamic.m

-(void)DeleteRecordControlsFromTable:(NSString *)listtype 
{ 
NSManagedObjectContext *deleteContext = [self ManagedObjectContext]; 

NSFetchRequest *fetch = [[NSFetchRequest alloc] init]; 
[fetch setEntity:[NSEntityDescription entityForName:@"Dynamic" inManagedObjectContext:deleteContext]]; 

NSPredicate *predicate=[NSPredicate predicateWithFormat:@"listType == %@", listtype]; 
[fetch setPredicate:predicate]; 

NSError * error = nil; 

NSArray * lookupdata = [deleteContext executeFetchRequest:fetch error:&error]; 
for(NSManagedObject *info in lookupdata) 
{ 
    [deleteContext deleteObject:info]; 
    [deleteContext save:&error]; 
} 

} 

Он бросает ошибку в dbObjDynamic = [[Dynamic alloc]init];

Заранее спасибо.

+0

Можете ли вы отправить код метода Dynamic init? –

+0

@SergiiMartynenkoJr - Его просто инициализация объекта. нет источника для этого. Обязательно ли добавлять код для инициализации? – shlok

+0

Если вы уверены, что там ничего не происходит, вы можете не публиковать его здесь. Тем не менее, я не вижу никакой причины, кроме как, почему это не удается в этой точке кода. –

ответ

0

Вы должны Alloc/инициализации к экземпляру получают из Dynamic класса managedObject, Вместо этого используйте это -

Dynamic *dbObjDynamic = [self.fetchedResultsController objectAtIndexPath:specificIndex]; 

, а также называть их метод, чтобы получить fetchedResults на Dynamic класса managedObject от managedObjectContext

- (NSFetchedResultsController *)fetchedResultsController { 
    if (_fetchedResultsController != nil) { 
     return _fetchedResultsController; 
    } 

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]init]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Dynamic" inManagedObjectContext:self.managedObjectContext]; 

    [fetchRequest setEntity:entity]; 

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] 
             initWithKey:@"anyAttributeOfDynamic" 
             ascending:YES]; 

    NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor, nil]; 
    [fetchRequest setSortDescriptors:sortDescriptors]; 

    _fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:nil]; 
    _fetchedResultsController.delegate = self; 

    NSError *error = nil; 
    if (![self.fetchedResultsController performFetch:&error]) { 
     NSLog(@"Core data error %@, %@", error, [error userInfo]); 
     abort(); 
    } 

    return _fetchedResultsController; 
} 
Смежные вопросы