1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Anfängerfrage: Cocoa + Bindings: Code wohin?

Dieses Thema im Forum "OS X-Developer" wurde erstellt von fuxx1.0, 23.12.08.

  1. fuxx1.0

    fuxx1.0 Golden Delicious

    Dabei seit:
    13.03.08
    Beiträge:
    6
    Hallo,

    ich bin gerade dabei, mir mal ein bisschen Cocoa und Bindings anzuschauen, bin allerdings totaler Anfänger, habe (noch!) kein Buch zur Hand und daher eine denke einfache, aber grundlegende Frage.

    Ich habe bereits erfolgreich so ein Model erstellt und dann eine Oberfläche mit einem TableView, welches an Hand der Auswahl einer Kategorie in einem anderen TableView eine Liste von Einträgen anzeigt, die dieser Kategorie zugeordnet wurden. Wählt man nun einen Eintrag aus der Liste, so erscheint ein Drawer, welcher oben als Label z.B. den Namen des Eintrags (also das Attribut des Entitys) anzeigt und weitere Informationen, unter anderem sogar ein BILD! :)

    Nun ist das alles gut und schön, aber stößt natürlich schnell auf seine Grenzen, denn viel mehr als Texte ändern und neue Einträge hinzufügen ist damit ja nicht drin. Meine nächste Aufgabe wäre nämlich folgendes:

    Der Benutzer kann bereits ein Bild zu einem Eintrag auf das NSImageView ziehen und dieses Bild wird dann als BINARY-Attribut zum Entity per CoreData gespeichert. Das ging alles prima mit Bindings und ohne eine Zeile Code. (Bindings sind echt super!)

    Ich möchte jetzt aber beim Droppen des BIlds auf das NSImageView NICHT NUR das Bild als Attribut speichern, sondern auch eine Thumbnail-Version davon. Sprich:

    Benutzer droppt das BIld auf das ImageView:
    1. Bild als Binary-Attribut "Image" CoreData-mäßig speichern (geht)
    2. Thumbnail erstellen (also Bild skalieren)
    3. Thumbnail ebenfalls als Binary-Attribut mit dem Namen "Thumbnail" im gleichen Entity speichern.

    Dazu brauche ich ja wohl etwas Code und meine eigentliche Frage ist nun, wo ich den genau hinschreibe und wie ich dem InterfaceBuilder mitteile, dass er diesen Code ausführen soll. Also ich würde jetzt eine Klasse "makeThumbnail" oder so schreiben, mit einer Methode, die das Thumbnail erstellt und dann per CoreData speichert (wie geht das Speichern per Code?). Wie sage ich nun ImageBuilder, dass er beim Ändern des ImageViews diese Methode aufrufen soll?
     
  2. Amin Negm-Awad

    Amin Negm-Awad Süsser Pfaffenapfel

    Dabei seit:
    01.03.07
    Beiträge:
    665
    Das machst du (fast) nicht mit dem IB. Du hast da den falschen Ansatz. (Du kannst das Bild natürlich auch einfach kleiner darstellen, aber es wird dir eher ums Prinzip gehen.)

    Das Bild ist eine Eigenschaft einer CD-Entität. Das Thumbnail ebenfalls! Zwar enthält diese Eigenschaft keine neue Information, stellt aber vorhandene Informationen anders dar. Siewird also aus den bestehenden Informationen errechnet. Man nennt dies eine Computed-Property.

    Es gibt verschiedene Strategien, die ichteilweise anspreche. Das sprengt jetzt den Rahmen. Denkbar sind in deinem Falle:

    - Value-Transformer, was die mwandlung "on the fly" vornimmt.
    - Eigene Property für die Zieleigenschaft (Thumbnail), die nur über einen Getter verfügt
    - Eigene Instanzvariable für die Zieleigenschaft, die über eigene Setter der Ausgangsproperty (Image) bedient werden.
     

Diese Seite empfehlen