Entity Class für CoreData und JSON

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

  • Entity Class für CoreData und JSON

    Hallo,

    habe mir mit CoreData eine NSManagedObject Subclass erstellen lassen.
    Das ist mein bisher einthaltener Initializor:

    Quellcode

    1. convenience init(context: NSManagedObjectContext) {
    2. let entityDescription = NSEntityDescription.entityForName("User", inManagedObjectContext: context)!
    3. self.init(entity: entityDescription, insertIntoManagedObjectContext: context)
    4. }

    Wenn ich jetzt von dem JsonResult, User Objekte erstellen möchte, muss ich immer ein Context übergeben, dabei möchte ich eig nur eine dictionary übergeben und ein normales User object erstellen.
    Hatte früger so ein, der geht aber nicht mehr, weil ich self.init aufrufen muss.

    Quellcode

    1. convenience init(json: [String: AnyObject]) {
    2. let name = json["name"] as! String
    3. }

    Gruß
  • eminwargo schrieb:

    Auch bei der Fabrikmethode muss ich den Superkonstruktor von NSManagedObject aufrufen.
    Den Initializer solltest du immer aufrufen, wenn du ein neues Objekt erzeugst. Das ist aber hier nicht der Punkt: Ich habe geschrieben, dass man ihn in der Regel nicht überschreibt. Neue Objekte erzeugt in der Regel über die Entity-Description des Objekts, und da nützt dir ein Initializer mit eigenen Parameterliste wenig.

    eminwargo schrieb:

    Wie macht ihr das denn, wenn ihr für JSON und CoreData Ergebnisse die gleiche Klasse nutzen könnt/wollt?
    Zwei Methoden (z. B. JSONData und setJSONData:) zum Lesen und Schreiben der JSON-Daten in der Klasse des Objekts.
    „Meine Komplikation hatte eine Komplikation.“
  • Kurze Frage noch. Ich habe zwei Connection Klassen, einmal JSONConnection und CoreDataStack.
    Ist es üblich, dass man sich zu diesen Klassen Hilfsklassen macht, um zB das Ergebnis von der JSONConnection zu parsen und erst dann dem Controller zurückgegeben wird?!

    Ich bin mir zB nicht sicher, ob so etwas in die "CoreDataExecution" Hilfsklasse rein soll oder direkt in den VC:

    Quellcode

    1. func insertUser() {
    2. let managedContext = connection.managedObjectContext!
    3. let kunde = NSEntityDescription.insertNewObjectForEntityForName("User", inManagedObjectContext: managedContext) as! Kunde
    4. user.name = "TEST"
    5. var error: NSError?
    6. if !managedContext.save(&error) {
    7. println("Could not save \(error), \(error?.userInfo)")
    8. }
    9. }