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

이제 내 목표는 두 번째 탭의 타바을 보여주는 것입니다하는의 TableView (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', 이유에 " 응용 프로그램을 종료 : 내가 두 번째 탭 (ScansViewController)를 choosed 할 때 처음에는

난이 오류가 '+ 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

관련 문제