CreateJob: Endlich einen Datensatz erzeugen

Hallo und Herzlich Willkommen zu unserem bneunten Teil der Serie HowToDoIt!

Inhalt dieser Folge

Wir wollen einen ersten Datensatz erzeugen. Doch dazu sind jede Menge Vorbereitungen zu treffen.

Ein einfacher Dialog soll für die Dateneingabe verwendet werden und doch sollen alle Texte auch für andere Sprachen veränderbar sein. Hier treffen wir auf das Konzept NSLocalizedString.

Closures sind ein starkes Konstrukt von Swift, wie wir in diesem Video sehen werden.

Video

Previous post

HowToDoIt! NSManagedObjects Folge 8

Next post

HowToDoIt! NSFetchedResults-Controller Folge 10

The Author

Frank Jüstel

Frank Jüstel

Frank Jüstel versteht sich darauf, ein Bindeglied zwischen IT- und Fachabteilung zu sein, denn er begreift die Wünsche und Anforderungen der Benutzer und setzt diese, auch als Team- oder Projektleiter, erfolgreich um. Agile Softwareentwicklung, SCRUM und Extreme-Programming zählen zu seinen liebsten Methoden.

Seit 1994 ist er für Banken, Börsen, Versicherungen sowie für Klein- und Mittelständische- Industrieunternehmen in der Finanzmetropole Frankfurt am Main als Systemberater, Trainer und Coach tätig.

Darüber hinaus ist er einer der Video-Trainer von Video2Brain und gibt regelmäßig Schulungen und Seminare im gesamten deutschsprachigen Raum, wobei er sich auf iOS und Swift, also auf die Softwareentwicklung für iPad, iPhone & Co. spezialisiert hat.

9 Comments

  1. Zimon
    24. Juli 2015 at 11:34 — Antworten

    Hallo,

    super Reihe! So gut und einfach erklärt und vor allem für Leute die schon Programmiererfahrung haben und sich nicht zum 100 mal erklären wollen was Klassen sind, aber dennoch keine Ahnung von all den Apple Frameworks haben.

    Jetzt habe ich allerdings 2 Fragen: Es wurde in den Videos erklärt, dass man sich alle Videos runterladen kann und dann offline genießen kann.
    Leider konnte ich nichts dergleichen finden.

    Die “Hotkeys” finde ich total wichtig zum nachschlagen, allerdings nutzlos wenn man nur via youtube die videos anschaut, oder mache ich was falsch?

    Gibt es eine Möglichkeit euch eine Spende via Paypal/Flattr/Patreon o.ä. zukommen zu lassen?

    Ansonsten weiter so!

    • 24. Juli 2015 at 12:03 — Antworten

      Hallo Zimon,

      vielen Dank für den lieben Kommentar. Schön, dass Dir unsere Tutorialreihe gefällt.

      Die HowToDoIt! App für iPhone und Apple Watch war inklusive Videos und SourceCode für den AppStore vorgesehen. Dann hätte man die Videos auch downloaden können. Wir hatten uns jedoch dazu entschlossen, das Material für Euch im SwiftBlog auch kostenfrei zur Verfügung zu stellen. Insofern stimmt die Beschreibung aus den Videos nicht mehr 100 prozentig mit der aktuellen Verwendung überein.

      Wir besprechen noch, ob die App trotzdem auch in den AppStore geht, dann wäre das mit der “Spende” für den Zugriff auf Videos und Sorcecode zum downloaden auch wieder möglich 🙂

      Wir bleiben an dem Thema dran!

      Dankeschön und herzliche Grüße
      Franky

  2. Renzo
    2. September 2015 at 20:10 — Antworten

    Hallo,

    coole Reihe! Was kannst du mir noch empfehlen um noch besser in swift Fuss zu fassen. Bin Neueinsteiger. Nicht nie Programmiert. Macht jedoch super Spass und ist ja auch logisch aufgebaut 🙂

    PS: leider bekomme ich zum Ende des Videos nicht nur “OK button pressed” & “text = Einkaufen”! Unten das Warning: (Finde leider nichts im Internet). Was hab ich da falsch gemacht?

    Grüsse Renzo

    Ok button pressed
    text = Einkaufen
    2015-09-02 20:07:49.540 HowToDoit-DE[3501:166404] CoreData: warning: Unable to load class named ‘Job’ for entity ‘Job’. Class not found, using default NSManagedObject instead.
    Could not cast value of type ‘NSManagedObject_Job_’ (0x7ff78b818740) to ‘HowToDoit_DE.Job’ (0x107aa3ba0).
    (lldb)

    • 8. September 2015 at 18:08 — Antworten

      Hi Renzo,

      kann es sein, dass Du diese @objc(Job) Annotation vor der Klasse Job vergessen hast? Hast Du auch die Modulinformation aus dem CoreData-Modeller herausgenommen?

      Liebe Grüße
      Franky

  3. Basti
    9. September 2015 at 16:36 — Antworten

    Hallo Franky,

    am Ende des Video’s weis du noch mal auf eine Fehlermeldung hin (createWithJobName -> saveContext -> … ), die ich dann auch bekommen habe:
    Ok Button pressed
    text = Einkaufen
    2015-09-09 16:20:25.424 First App[739:169058] Can’t create persistentStoreCoordinator
    (lldb)

    Was habe ich da Falsch gemacht?

    • 9. September 2015 at 17:21 — Antworten

      Hi Basti,

      wenn der persistensStoreCoordinator nicht erzeugt werden kann, ist vermutlich mit der ApplicationGroup etwas faul.
      Kann es sein, dass der Ordner nicht gefunden werden kann, in dem die Datenbank-Dateien gespeichert werden sollen?

      l.G.
      Franky

      • Basti
        9. September 2015 at 22:19

        Hi Franky,

        Ahja das ist es, ich habe mir nämlich keine AppGroup angelegt, kann ich das irgendwie umgehen oder sollte ich mir dafür eine Apple Developer ID zulegen?

        L.G Basti

  4. Stephan
    29. November 2015 at 13:25 — Antworten

    Hallo zusammen,

    erst einmal muss ich sagen: Grandioser Blog. Hilft wirklich enorm weiter, gerade auch als erfahrener Programmierer- jedoch mit wenigen Kenntnissen in Swift.

    Jetzt bin ich bis zu diesem Video ohne Probleme mitgekommen, auch wenn sich Swift scheinbar nochmals von der Syntax verändert hat (musste hier und da ein paar Dinge anders programmieren, als im Video vorgegeben).

    Nun bin ich genau an der Stelle, an welcher ich den Job abspeichern möchte:

    static func createJobWriteName (name:String) -> Job {
    let job = NSEntityDescription.insertNewObjectForEntityForName(KJobEntity, inManagedObjectContext: CoreData.sharedInstance.managedObjectContext) as! Job

    job.name = name
    CoreData.sharedInstance.saveContext()
    return job
    }

    }

    Allerdings erscheint erst eine Warnung, dann eine Fehlermeldung:

    2015-11-29 13:21:21.564 Voldano[760:14332] CoreData: warning: Unable to load class named ‘Voldano.Job’ for entity ‘Job’. Class not found, using default NSManagedObject instead.
    Could not cast value of type ‘NSManagedObject_Job_’ (0x7fac79d951e0) to ‘Voldano.Job’ (0x10062ddf0).

    Irgendeine Idee? Wäre wirklich klasse- dann könnte ich mit den Folgevideos weitermachen…

    Besten Dank!

    Viele Grüße,
    Stephan

    • 29. November 2015 at 14:34 — Antworten

      Hi Stephan,

      Die Klasse “Voldano.Job” ist mir unbekannt. Hast Du diese irgendwo in Deinem Projekt erzeugt, diese jedoch nicht im CoreDataModel verwendet? Oder umgekehrt, hast Du im CoreDataModel eine Entity diesen Namens angegeben, nicht jedoch eine passende Swift Klasse dazu?

      CoreData ist durch interne Mechanismen, basierend auf Introspection, sehr penible, was die Namensgebung anbelangt, da bleibt leider kein Spielraum übrig.

      Des weiteren ist es so, dass mit Erscheinen von iOS9 und WatchOS2 leider vielen geändert hat, und Apps nicht wie vorher von Apple versprochen kompatibel bleiben. Der Mechanismus mit der “SharedAppGroup” zum Austausch von Daten zwischen iPhone und AppleWatch, wie später als tragende Säule in dem Beispielprojekt verwendet, funktioniert nicht mehr 🙁

      Insofern wirst Du die App stand heute leider nicht mehr in Betrieb nehmen können. Grundlegende Dinge wie CoreData, UITableView, NSFetchedResultsController u.s.w. sind davon unberührt, so dass das Tutorial hier immer noch sehr hilfreich sein kann. Nur leider wird das Gesamtziel nicht mehr erreicht.

      Wir arbeiten an neuen, komplexen Tutorials, die dann für einige Wochen wieder dem Stand der Technik entsprechen werden, bis Apple wieder einmal alte Zöpfe abschneidet.

      Liebe Grüße und dennoch HappyCoding !!!! 🙂
      Franky

Leave a reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.