我正在尝试获取我在其中一个核心数据对象中保存的值,但是我一直收到此错误
*** 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;
非常感谢任何帮助。
答案 0 :(得分:3)
你这样做:
NSManagedObjectContext *context = [self managedObjectContext];
但是你可以访问它:
self.managedObjectContext
假设您的NSLog(@"%@", context);
显示了有效的NSManagedObjectContext,那么我会这样做:
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Man" inManagedObjectContext:context];
或者,将原始声明更改为:
self.managedObjectContext = [self managedObjectContext];
答案 1 :(得分:1)
在你的viewController.m实现文件中,就在这段代码下面:
- (void)viewDidLoad
{
添加这段代码:
id delegate = [[UIApplication sharedApplication] delegate];
self.managedObjectContext = [delegate managedObjectContext];