Hallo Leute,
ich bekomme meine Daten aus der Datenbank nicht ausgelesen.
Ich hab eine App mit einem TabBarController. Im ersten Tab wird mit der iPhone-Kamera ein Barcode gescannt und dieser an ein View(CameraReturnDetailViewController) weitergegeben.
Im CameraReturnDetailViewController-View befindet sich der Speichern-Button mit folgendem Code:
CameraReturnDetailViewController.m
Alles anzeigen
Jetzt möchte ich meine Daten in einem anderen View (ScansViewController) in eine TableView laden.
ScansViewController.m
Alles anzeigen
Erst bekam ich einen Absturz mit dieser Fehlermeldung:
"
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+entityForName: could not locate an NSManagedObjectModel for entity name 'BarcodeDaten''
"
Obwohl der Name richtig ist, wundert mich diese Fehlermeldung. Den absturz konnte ich mit der oben im Code fett markierten zeilen unterdrücken.
Doch warum kann ich die Daten nicht in die Tabelle laden? Was habe ich falsch gemacht?
Gruß und danke für jegliche Hilfe,
brush51
ich bekomme meine Daten aus der Datenbank nicht ausgelesen.
Ich hab eine App mit einem TabBarController. Im ersten Tab wird mit der iPhone-Kamera ein Barcode gescannt und dieser an ein View(CameraReturnDetailViewController) weitergegeben.
Im CameraReturnDetailViewController-View befindet sich der Speichern-Button mit folgendem Code:
CameraReturnDetailViewController.m
Quellcode
- - (IBAction)saveAndQuitScan:(id) sender {
- XLog(@"saveAndQuitScan button wurde geklickt!");
- ProjectQRCodeAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
- NSManagedObjectContext *context = [appDelegate managedObjectContext];
- NSManagedObject *newData;
- newData = [NSEntityDescription insertNewObjectForEntityForName:@"BarcodeDaten" inManagedObjectContext:context];
- [newData setValue:dataLabel.text forKey:@"Barcode_CD"];
- NSError *error;
- [context save:&error];
- //Aktuelle ansicht (self) animiert verlassen
- [self dismissModalViewControllerAnimated:YES];
- // Nachdem die ansicht verlassen wurde,
- // auf das zweite Tab wechseln(scanverlauf)
- /** TO DO - Funktioniert noch nicht **/
- [self.tabBarController setSelectedIndex:1];
- }
Jetzt möchte ich meine Daten in einem anderen View (ScansViewController) in eine TableView laden.
ScansViewController.m
Quellcode
- - (void)viewDidLoad {
- [super viewDidLoad];
- if (managedObjectContext_ == nil)
- {
- managedObjectContext_ = [(ProjectQRCodeAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
- NSLog(@"After managedObjectContext: %@", managedObjectContext_);
- }
- myTableView = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame] style:UITableViewStylePlain];
- myTableView.delegate = self;
- myTableView.dataSource = self;
- myTableView.autoresizesSubviews = YES;
- self.navigationItem.title = @"Code Liste";
- self.view = myTableView;
- }
- - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
- return [itemsList count];
- }
- - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
- static NSString *CellIdentifier = @"Cell";
- UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
- if (cell == nil) {
- cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
- }
- return cell;
- }
- - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
- return 1;
- }
- - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
- NSString *selectDay = [NSString stringWithFormat:@"%d", indexPath.row];
- TableDetailViewController *fvController = [[TableDetailViewController alloc] initWithNibName:@"TableDetailViewController" bundle:[NSBundle mainBundle]];
- fvController.selectDay = selectDay;
- [self.navigationController pushViewController:fvController animated:YES];
- [fvController release];
- fvController = nil;
- }
- - (void) configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {
- NSManagedObject *managedObject = [self.fetchedResultsController objectAtIndexPath:indexPath];
- cell.textLabel.text = [[managedObject valueForKey:@"Barcode_CD"] description];
- }
- - (NSFetchedResultsController *) fetchedResultsController {
- if (fetchedResultsController_ !=nil) {
- return fetchedResultsController_;
- }
- NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
- NSEntityDescription *entity = [NSEntityDescription entityForName:@"BarcodeDaten" inManagedObjectContext:self.managedObjectContext];
- [fetchRequest setEntity:entity];
- [fetchRequest setFetchBatchSize:20];
- NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"Barcode_CD" ascending:NO];
- NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
- [fetchRequest setSortDescriptors:sortDescriptors];
- NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@"Root"];
- aFetchedResultsController.delegate = self;
- self.fetchedResultsController = aFetchedResultsController;
- [aFetchedResultsController release];
- [fetchRequest release];
- [sortDescriptor release];
- [sortDescriptors release];
- NSError *error = nil;
- if (![fetchedResultsController_ performFetch:&error]) {
- XLog(@"Error: %@, %@", error, [error userInfo]);
- abort();
- }
- return fetchedResultsController_;
- }
Erst bekam ich einen Absturz mit dieser Fehlermeldung:
"
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+entityForName: could not locate an NSManagedObjectModel for entity name 'BarcodeDaten''
"
Obwohl der Name richtig ist, wundert mich diese Fehlermeldung. Den absturz konnte ich mit der oben im Code fett markierten zeilen unterdrücken.
Doch warum kann ich die Daten nicht in die Tabelle laden? Was habe ich falsch gemacht?
Gruß und danke für jegliche Hilfe,
brush51