2

我正在尝试获取保存在我的核心数据对象之一中的值,但是我不断收到此错误

 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+entityForName: nil is not a legal NSManagedObjectContext parameter searching for entity name 'Man''

结果错误发生在我编写的尝试访问核心数据对象然后记录其内容的代码中,如下所示。

if ([manufDBVNumber isEqualToNumber:currentDBVersion]) {
        // READ FROM CORE DATA
        // WRITE TO CORE DATA
        NSManagedObjectContext *context = [self managedObjectContext];

        NSLog(@"%@", context);

        // Test listing all FailedBankInfos from the store
        NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
        NSEntityDescription *entity = [NSEntityDescription entityForName:@"Man" inManagedObjectContext:self.managedObjectContext]; // This is where the error is happening.
        [fetchRequest setEntity:entity];

        NSError *error;


        NSMutableArray *manufacturerDictionaryArray = [[NSMutableArray alloc] init];


        NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
        for (Manuf *manuf in fetchedObjects) {
            NSLog(@"MANA: %@", man.mana);
            NSLog(@"SURGE: %@", man.surge);
            NSLog(@"HEALTH: %@", manuf.health);


etc//....

这就是我合成 managedObjectContext 和 fetchedResultsController 的方式

// Core-Data variables used for fetching and managing the object
@synthesize fetchedResultsController = __fetchedResultsController;
@synthesize managedObjectContext = __managedObjectContext;

任何帮助将不胜感激。

4

2 回答 2

3

你来做这件事:

NSManagedObjectContext *context = [self managedObjectContext];

但是然后你访问这个:

self.managedObjectContext

假设您NSLog(@"%@", context);显示一个有效的 NSManagedObjectContext,那么我会这样做:

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Man" inManagedObjectContext:context];

或者,将您的原始声明更改为:

self.managedObjectContext = [self managedObjectContext];
于 2012-10-01T02:42:18.880 回答
1

在您的 viewController.m 实现文件中,就在这段代码下面:

- (void)viewDidLoad
{

添加这段代码:

id delegate = [[UIApplication sharedApplication] delegate];
    self.managedObjectContext = [delegate managedObjectContext];
于 2013-06-26T22:45:06.537 回答