Gewusst wie: aktualisieren einer UITableViewController oder NSFetchedResultsController?

Ich habe ein kleines problem mit meinem UITableViewController oder NSFetchedResultsController. Ich bin nicht sicher, was das problem ist ein Source-aber ich denke, es ist die UITableViewController.

Als ich sagte, ich einen NSFetchedResultsController zu füllen meine Daten in einem UITableViewController. Die Daten werden nach Datum sortiert und wird auch angezeigt in den Abschnitten von Datum-Jahr z.B. Mai 2010/Juni 2010/und so weiter. Dies erscheint als Abschnittsüberschrift.

Wenn ich jetzt neue Daten hinzufügen, es wird automatisch das aktuelle Datum verwendet als default, aber wenn ich verwenden möchten, ein Datum, dass ist derzeit nicht in der Liste Abschnitt, z.B. April 2010 (aktuell Mai und Juni in der Liste), dann ist dies nicht korrekt angezeigt. Nur wenn ich die app beenden und neu starten, es zeigt den neuen Abschnitt Header und alles ist gut.

So, die ich irgendwie brauchen, um in der Lage sein zu aktualisieren meiner Liste oder zu aktualisieren. Indem Sie nur an den Kontext und ändern scheint es nicht zu aktualisieren.

Wieder, ich bin nicht sicher, was ich brauchen, um zu aktualisieren, wenn es ist mein NSFetchedResultsController Objekt oder die UITableViewController.

UPDATE #1:

Ich dachte nur, dass es eine Ausnahme bei dieser Methode :

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller 
{
    //The fetch controller has sent all current change notifications, so tell the table view to process all updates.
    [self.tableView endUpdates];

}

Dies ist, wo ich die Daten verschieben :

- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath 
{

    UITableView *tableView = self.tableView;

    switch(type) 
    {

        case NSFetchedResultsChangeInsert:
            [tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
            break;

        case NSFetchedResultsChangeDelete:
            [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
            break;

        case NSFetchedResultsChangeUpdate:
        // [self configureCell:[tableView cellForRowAtIndexPath:indexPath] atIndexPath:indexPath];

            break;

        case NSFetchedResultsChangeMove:
            [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
            //Reloading the section inserts a new row and ensures that titles are updated appropriately.
            [tableView reloadSections:[NSIndexSet indexSetWithIndex:newIndexPath.section] withRowAnimation:UITableViewRowAnimationFade];
            break;
    }

}

Diese Methode ist ziemlich viel genommen von der CoreDataBooks Beispiel von Apple. Und das ist der Fehler :

Schwere Anwendungsfehler. Ein
Ausnahme war gefangen von den Delegierten
der NSFetchedResultsController während einer
Aufruf -controllerDidChangeContent:.
*** -[NSMutableArray removeObjectAtIndex:]: index 1 über
Grenzen [0 .. 0] mit userInfo (null)

Und nach, dass der Bearbeiten-Modus (wo der löschen button erscheint) funktioniert nicht mehr.

Dank.

InformationsquelleAutor elementsense | 2010-06-19
Schreibe einen Kommentar