Behandlung von CoreData-Fehlern

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Behandlung von CoreData-Fehlern

    Hallo zusammen,

    wenn man ein Xcode-Template mit CoreData nutzt, enthält die Beispiel-Implementierung ja einige Fehlerbehandlungen, in denen die Applikation einfach abnormal beendet wird, z. B.:

    Quellcode

    1. if (![self.fetchedResultsController performFetch:&error])
    2. {
    3. NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    4. abort();
    5. }
    Wie fangt Ihr derartige Fehler (beim Daten-Abruf oder Speichern von Änderungen) ab? Mir fällt im Moment nichts besseres ein, als eine Meldung auszugeben und ... ja, was? Beenden der App und die Daten sind futsch? Einfach nochmals probieren dürfte an der Fehlersituation nichts ändern...

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Laut Dokumentation tritt an dieser Stelle ein Fehler auf, wenn die Suchanfrage keine Sortierung enthält; also ein Programmierfehler vorliegt. Hier ist dann ein Programmabsturz gerechtfertigt, da man so den Fehler bei der Entwicklung am schnellsten bemerkt und Abhilfe schaffen kann. Das Programm beim Endanwender sollte jedoch niemals in den If-Block gelangen.

    Meines Erachtens ist das bei den Core-Data-Fehlern meistens so: Man sollte vor dem Aufruf der betreffenden Core-Data-Methode sicherstellen, dass kein Fehler auftreten kann.
    „Meine Komplikation hatte eine Komplikation.“
  • Um Macmoonshines Antwort noch etwas zu konkretisieren: schreib Dir Tests, die das erwartete Verhalten betreffen, also Sortierung, erwartete Werte (dictionaries vs MOs vs Object-ID) usw. Das kannst Du z.B. mit einem inmemorystore fürs Testen machen.

    Genauso speichern, Migration usw. Dann hast Du die "gefährlichen" und für den User sichtbaren Fälle schonmal abgedeckt. Wenn dann tatsächlich Fehler beim User auftreten, nimm die Error Ausgabe mit ins crashlog rein.