Hilfe mit Core Data

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

  • Hilfe mit Core Data

    Hallo,

    ich beschäftige mich noch nicht lange mit Objective C, daher bitte etwas Nachsicht. Ich muss im Zuge einer Bachelorarbeit eine Software für das iPad schreiben. Eine Art elektronisches Notizbuch. Anfallende Daten sollen da natürlich gespeichert werden. Dafür habe ich mich für CoreData entschieden. Nach einiger Recherche habe ich das Prinzip auch so einigermaßen Verstanden, jedoch treffe ich jetzt auf verschiedene Probleme, die ich irgendwie nicht hinbekomme, ich hoffe mir kann hier geholfen werden.

    Also ich habe mehrere Views. Alles was irgendwie mit CoreData zu tun hat, habe ich in einer Klasse "CoreDataController" ausgelagert. Die Idee war jetzt die, dass ich an den Stellen, an denen ich etwas aus der Datenbank brauche oder etwas hineinschreiben will eine Instanz von CoreDataController erzeuge und dort eine entsprechende Methode aufrufe.

    Zunächst habe ich versucht ein Login-System zu entwerfen. Im LoginViewController, habe ich also eine CoreDataController Instanz erzeugt, dort einen Beispieluser angelegt und anschließend nach eingabe von Logindaten überprüft, ob es diesen User mit dem angegebenen Passwort in der DB gibt. Das hat ohne weiteres funktioniert.

    Als nächstes Wollte ich eine View haben, in der ich neue Benutzer hinzufügen und mir auch alle User anzeigen lassen kann. Dort bin ich genauso vorgegangen, jedoch mit dem Ergebnis, dass der FetchRequest immer ein leeres Array zurückliefert. Nach einigem hin und her habe ich außerdem noch festgestellt, dass wenn ich beim LoginViewController die Anweisung entferne, die mir einen Beispieluser anlegt :

    Quellcode

    1. -(void) initializeWithData{
    2. User *user = (User*) [NSEntityDescription insertNewObjectForEntityForName:@"User" inManagedObjectContext:self.managedObjectContext];
    3. user.isAdmin = [NSNumber numberWithBool:YES];
    4. user.username = @"BeispielUser";
    5. user.password = @"BeispielPasswort";
    6. // speichert den Benutzer in die Datenbank
    7. if ([self.managedObjectContext hasChanges]) {
    8. [self.managedObjectContext save:nil];
    9. }
    10. // gibt den angelegten Benutzer in der Konsole aus
    11. [self consoleOutput];
    12. }
    Alles anzeigen


    Dann befindet sich nach Neustart kein Benutzer mehr in der DB, dabei sollte doch der User permanent durch das [self.managedObjectContext save:nil] gesichert worden sein oder?

    Meine Fragen dazu sind jetzt also, warum wird der Benutzer nicht permanent in der Datenbank gespeichert und wie kann ich von jeglicher View auf die Datenbank zugreifen?

    Hoffe ich habe alles verständlich erklärt, ansonsten könnte ich das Beispielprojekt auch noch anhängen.