[英]Can't get data from my core-data database
I am always getting my data from my webservice on the same way. 我总是以相同的方式从Web服务获取数据。 It always worked. 一直有效。 But now I am getting this error. 但是现在我得到了这个错误。
*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '+entityForName: nil is not a legal NSManagedObjectContext parameter
searching for entity name 'Team''
It is crashing in this method. 这种方法崩溃了。
- (NSMutableArray *)getDoelmannen
{
NSLog(@"tot hier doelman");
NSArray *results = [[NSArray alloc]init];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Team"
inManagedObjectContext:self.genkDatabase.managedObjectContext]];
request.predicate = [NSPredicate predicateWithFormat:@"position ==[c] %@",
@"Doelman"];
NSLog(@"predicate is: %@",request.predicate);
NSError *error = nil;
NSLog(@"tot hier");
results = [self.genkDatabase.managedObjectContext
executeFetchRequest:request error:&error];
return [results valueForKey:@"image"] ;
}
For opening my database I use the following methods. 为了打开数据库,我使用以下方法。
-(void)viewWillAppear:(BOOL)animated
{
if (!self.genkDatabase) { // we'll create a default database if none is set
NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
url = [url URLByAppendingPathComponent:@"Default appGenk Database"];
self.genkDatabase = [[UIManagedDocument alloc] initWithFileURL:url]; // setter will create this for us on disk
}
}
- (void)setGenkDatabase:(UIManagedDocument *)genkDatabase
{
if (_genkDatabase != genkDatabase) {
_genkDatabase = genkDatabase;
[self useDocument];
}
}
- (void)useDocument
{
if (![[NSFileManager defaultManager] fileExistsAtPath:[self.genkDatabase.fileURL path]]) {
// does not exist on disk, so create it
[self.genkDatabase saveToURL:self.genkDatabase.fileURL forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success) {
NSLog(@"bestaat niet");
[self getTeam];
}];
} else if (self.genkDatabase.documentState == UIDocumentStateClosed) {
// exists on disk, but we need to open it
[self.genkDatabase openWithCompletionHandler:^(BOOL success) {
NSLog(@"closed");
[self getTeam];
}];
} else if (self.genkDatabase.documentState == UIDocumentStateNormal) {
// already open and ready to use
NSLog(@"Normal");
[self getTeam];
}
}
Can anybody help me? 有谁能够帮助我?
Kind regards. 亲切的问候。
EDTI 埃迪
It's very strange because when I test the method in anohter viewcontroller it works. 这很奇怪,因为当我在另一个viewcontroller中测试该方法时,它可以工作。 The only difference is in my .h file I do this. 唯一的区别是在我的.h文件中,我这样做。
@interface MultimediaViewController : CoreDataTableViewController
And in the viewController where it doesn't works it does this. 并且在不起作用的viewController中执行此操作。
@interface MultimediaViewController : NRGridViewController
But I still did import it like this. 但是我仍然像这样导入它。
#import "CoreDataTableViewController.h"
Okay so I tried another function. 好的,所以我尝试了另一个功能。 And it worked. 而且有效。 I think it probably had something to do with my managedobjectContext. 我认为这可能与我的managedObjectContext有关。 Here is the function that worked. 这是起作用的功能。
- (NSArray *)getDoelmannen
{
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Team"];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"sortOrder == 1"];
[request setPredicate:predicate];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
NSError *error = nil;
NSArray *mutableFetchResults = [self.genkDatabase.managedObjectContext executeFetchRequest:request error:&error];
if (mutableFetchResults == nil) {
//handle error
}else if ([mutableFetchResults count] == 0){
NSLog(@"geen resultaten voor doelmannen");
}else{
//NSLog(@"Name: %@ , position %@",[mutableFetchResults valueForKey:@"name"],[mutableFetchResults valueForKey:@"position"]);
return mutableFetchResults;
}
return mutableFetchResults;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.