[macOS] Swift 3 - Document Based Application - Datenaustausch

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

  • [macOS] Swift 3 - Document Based Application - Datenaustausch

    Ich habe eine simple Document Based Application in Swift 3.
    Die ViewControllerScene enthält eine View (Bezierview.swift) die eine Subklasse von NSView ist.
    Bezierview.swift ist ganz simpel mit drawRect() und Maushandling.
    Es gibt vier Variablen var controlPoint_1 = NSPoint(), controlPoint_2, startPoint, endPoint,
    welche durch Mausklicks verschiedene Werte annehmen können.
    Ich möchte diese aktuellen Werte im Document.swift in ein File speichern, bzw. beim Öffnen des Files diese wieder herstellen.

    Mir fehlt das Verständnis wie ich das in Swift machen kann....
    Dateien
  • Konkret geht es mir darum diese 4 NSPoints zwischen document.swift und bezierview.swift auszutauschen.

    Wie setze ich beim Öffnen des Files (document.swift) diese 4 Variablen in bezierview.swift und wie gelangen die aktuellen Werte der 4 Variablen aus bezierview.swift in document.swift, wenn ich sei abspeichern will ....

    lg.
  • Okay, dann war Deine Frage oben sehr mißverständlich, weil Du vom Speichern in Dateien sprachst. Das ist nicht nötig bzw. wäre unsinnig, um Werte von einem Controller an den anderen zu übergeben. Tatsächlich braucht Deine bezierview nur vier Properties, die Du nach deren Instanzierung und vor Durchführung der Segue einfach auf die entsprechenden Werte setzt.

    Es gibt dafür eine Methode "prepare(for segue:...)", in die genau zum richtigen Zeitpunkt angesprungen wird...

    HTH, Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Sorry, ich steh immer noch ziemlich daneben

    github.com/frcocoatst/DocumentBasedAppBezier

    Ich habe ein document.swift in welchem ich 4 NSPoints speichern und laden will. Diese 4 Punkte werden in bezierview.swift durch Verschieben mit der Maus verändert. Wenn ich nun speichern will, dann müssen die aktuellen Werte der Punkte von bezierview.swift --> view controller.swift --> document.swift gelangen. Wenn man man ein neues Document erzeugt, bzw eines lädt, dann müssen die Werte von document.swift --> view controller.swift --> bezierview.swift gelangen.

    Mir fehlt da ein Rezept wie ich das einfach bewerkstelligten kann. Wahrscheinlich denke ich da zu kompliziert ...
    Das Speichern/laden als json ist dann ein nächster Schritt
  • Hallo Alle!

    So jetzt hatte ich etwas Zeit und bin mein Problem nochmals angegangen. Ich habe jetzt eine Lösung, die wahrscheinlich nicht schön und nicht effizient ist, aber grundsätzlich scheint es zu funktionieren.

    github.com/frcocoatst/DocumentBasedAppBezier

    Die aktuellen Werte der Punkte werden jetzt beim Speichern von bezierview.swift --> view controller.swift --> document.swift durchgereicht. Bzw. beim Öffnen von document.swift --> view controller.swift --> bezierview.swift.

    Hat jemand eine effizientere Idee?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Fritz ()