Fehler beim Debuggen versuchen: *** Assertionsfehler in - [UITableView _createPreparedCellForGlobalRow: withIndexPath:]

Habe ich eine einfache UITableviewController, die gut funktioniert haben und nun etwas gebrochen hat..
Es stellt eine einfache form, die mir erlaubt, fügen Sie eine einfache 3-Feld Datensatz zu einer core-data managed object.

Wenn ich einen Datensatz hinzufügen, es sollte die Rückkehr zu der Tabelle und den Inhalt anzuzeigen. Ich kann sehen, dass es ist das schreiben des Datensatzes in die Datenbank, aber die Tabelle ist leer, und die folgenden Fehlermeldung wird angezeigt. Ich kann halten Sie das hinzufügen von Datensätzen durch einen Klick auf meine Schaltfläche "Hinzufügen", aber jedes mal, wenn ich speichern Sie den neuen Datensatz und kehren Sie zu der Tabelle, es ist leer.

Den kompletten Fehler den ich sehe, ist diese..

*** Assertion failure in -[UITableView _createPreparedCellForGlobalRow:withIndexPath:], /SourceCache/UIKit_Sim/UIKit-1448.89/UITableView.m:5678
2011-10-01 22:48:11.860 Gradetrack[59617:207] Serious application error.  An exception was caught from the delegate of NSFetchedResultsController during a call to -controllerDidChangeContent:.  UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath: with userInfo (null)

Wenn ich beenden Sie den simulator und starten Sie es, sehen kann ich von meinem NSLog-Anweisungen, die es entdeckt hat die richtige Anzahl der Datensätze aus der Datenbank und versucht hat, das laden der Tabelle, aber an diesem Punkt, ich bekomme eine ähnliche Fehlermeldung und stack trace unten.

2011-10-01 23:08:50.332 Gradetrack[59795:207] >>> Enumber of courses entered thus far: 4 
2011-10-01 23:08:50.334 Gradetrack[59795:207] *** Assertion failure in -[UITableView _createPreparedCellForGlobalRow:withIndexPath:], /SourceCache/UIKit_Sim/UIKit-1448.89/UITableView.m:5678
2011-10-01 23:08:50.337 Gradetrack[59795:207] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath:'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x00fd05a9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x01124313 objc_exception_throw + 44
    2   CoreFoundation                      0x00f88ef8 +[NSException raise:format:arguments:] + 136
    3   Foundation                          0x000e43bb -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 116
    4   UIKit                               0x0035ec91 -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 883
    5   UIKit                               0x003544cc -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:] + 75
    6   UIKit                               0x003698cc -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 1561
    7   UIKit                               0x0036190c -[UITableView layoutSubviews] + 242
    8   QuartzCore                          0x01f70a5a -[CALayer layoutSublayers] + 181
    9   QuartzCore                          0x01f72ddc CALayerLayoutIfNeeded + 220
    10  QuartzCore                          0x01f180b4 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 310
    11  QuartzCore                          0x01f19294 _ZN2CA11Transaction6commitEv + 292
    12  UIKit                               0x002eb9c9 -[UIApplication _reportAppLaunchFinished] + 39
    13  UIKit                               0x002ebe83 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 690
    14  UIKit                               0x002f6617 -[UIApplication handleEvent:withNewEvent:] + 1533
    15  UIKit                               0x002eeabf -[UIApplication sendEvent:] + 71
    16  UIKit                               0x002f3f2e _UIApplicationHandleEvent + 7576
    17  GraphicsServices                    0x01928992 PurpleEventCallback + 1550
    18  CoreFoundation                      0x00fb1944 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
    19  CoreFoundation                      0x00f11cf7 __CFRunLoopDoSource1 + 215
    20  CoreFoundation                      0x00f0ef83 __CFRunLoopRun + 979
    21  CoreFoundation                      0x00f0e840 CFRunLoopRunSpecific + 208
    22  CoreFoundation                      0x00f0e761 CFRunLoopRunInMode + 97
    23  UIKit                               0x002eb7d2 -[UIApplication _run] + 623
    24  UIKit                               0x002f7c93 UIApplicationMain + 1160
    25  Gradetrack                          0x00002034 main + 102
    26  Gradetrack                          0x00001fc5 start + 53

Basierend auf der NSLog-Anweisungen, dies ist der Letzte Unterprogramm ausgeführt.

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    //Return the number of rows in the section.
    NSLog(@">>> Enteringg %s [Line %d] ", __PRETTY_FUNCTION__, __LINE__);   

    id <NSFetchedResultsSectionInfo> sectionInfo = 
    [[_fetchedResultsController sections] objectAtIndex:section];
    NSLog(@">>> Enumber of courses entered thus far: %d ", [sectionInfo numberOfObjects]);  

    return [sectionInfo numberOfObjects];
}

Hinweis: die Ausgabe aus der Anzahl der Kurse eingetragen so weit... 4 war, das war richtig.

Hier ist, wo ich zurückkehren Zellen zurück zu den UITableViewController

- (UITableViewCell *)tableView:(UITableView *)tableView atIndexPath:(NSIndexPath *)indexPath {
    NSLog(@">>> Entering %s [Line %d] ", __PRETTY_FUNCTION__, __LINE__);    

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = 
    [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] 
                 initWithStyle:UITableViewCellStyleSubtitle 
                 reuseIdentifier:CellIdentifier] autorelease];
    }

    //Set up the cell...
    [tableView setAllowsSelectionDuringEditing:NO];
    [self configureCell:cell atIndexPath:indexPath];
    //load the cell with an appropriate image
    NSString *path = [[NSBundle mainBundle] pathForResource:@"studentprofile" ofType:@"png"];
    UIImage *theImage = [UIImage imageWithContentsOfFile:path];
    cell.imageView.image = theImage;

    return cell;
}

Basierend auf diesen Fehler und mein stack-trace, kann jemand mich in die richtige Richtung?

Vielen Dank,

Phil

InformationsquelleAutor der Frage phil | 2011-10-02

Schreibe einen Kommentar