1

私のデータベースから自分のデータを読み取ることができません。私はタブバーコントローラ付きのアプリを持っています。最初のタブの iphoneカメラはバーコードから画像を取得し、その結果を別のビュー(CameraReturnDetailViewController)に送信します。 CameraReturnDetailViewControllerで はsavebuttonであり、ここでは、この保存ボタンのコードです:TableViewはデータ(CoreData)を表示しません - アプリケーションのクラッシュ

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

さて、私の目的は2番目のタブでタバを示すことで、テーブルビュー(ScansViewController)中:

- (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_; 
} 
キャッチされない例外により 『NSInternalInconsistencyException』、理由に 「 アプリを終了:私は2番目のタブ(ScansViewController)を選びましたときにまず

は、私はこのエラーを取得 『+ entityForName:エンティティ名のNSManagedObjectModelを見つけることができませんでした『BarcodeDaten』』 "

名前は正しいですが、間違いを理解していません。

Tableviewにデータが表示されない理由は何ですか?

私は何かを逃しましたか?または何か間違っている?これは解決策である brush51

答えて

3

助けを

おかげで、:

if (managedObjectContext == nil) 
{ 
     managedObjectContext = [(CoreDataBooksAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext]; 
     NSLog(@"After managedObjectContext: %@", managedObjectContext); 
} 

このコードはこちらから:Core-Data iPhone: could not locate an NSManagedObjectModel

関連する問題