调用 NSManagedObject 方法会引发 EXC 错误访问



我正在我的应用程序中处理核心数据。我使用以下函数在核心数据数据库表中删除和插入数据。它第一次工作正常。当我第二次调用时,它会抛出 EXC 错误的访问权限。任何人都可以帮助解决这个问题。

@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];
}
}

在动态中

-(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];抛出错误

提前谢谢。

你应该分配/初始化到Dynamic managedObject 类的 get 实例,而不是使用这个 -

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

并调用这些方法从 managedObjectContext 中获取Dynamic类 managedObject 的获取结果

- (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;
}

最新更新