Settings für ein CoreData Document

  • Einstellungen für die App würde ich auch in die UserDefaults packen. Aber Einstellungen zu einem Dokument gehören ins Dokument und wo sollte man diese speichern als zusammen mit dem restlichen Dokument?

    Wenn ich das Dokument z.B. auf einen anderen Mac kopiere, dann sollen die Einstellungen ja mit kopiert werden und somit auch auf dem anderen Mac zur Verfügung stehen. Dies ist natürlich unmöglich, wenn ich die Einstellungen zu jedem Dokument global in den UserDefaults oder im Application Support speichere.
  • MCDan schrieb:

    Wenn ich das Dokument z.B. auf einen anderen Mac kopiere, dann sollen die Einstellungen ja mit kopiert werden und somit auch auf dem anderen Mac zur Verfügung stehen.

    Das ist ja wahrscheinlich gerade der Knackpunkt: Wenn Du das Dokument einem anderen Nutzer gibst, soll er dann Deine Einstellungen haben oder lieber nicht?
    „Meine Komplikation hatte eine Komplikation.“
  • macmoonshine schrieb:

    MCDan schrieb:

    Wenn ich das Dokument z.B. auf einen anderen Mac kopiere, dann sollen die Einstellungen ja mit kopiert werden und somit auch auf dem anderen Mac zur Verfügung stehen.

    Das ist ja wahrscheinlich gerade der Knackpunkt: Wenn Du das Dokument einem anderen Nutzer gibst, soll er dann Deine Einstellungen haben oder lieber nicht?

    Gegenfrage: Wenn ich das Dokument auf einem anderen Rechner/mit einem anderen Nutzernamen nutzen möchte, soll ich dann meine Einstellungen haben oder lieber nicht? ;)
    Hat das denn schon mal jemand ausprobiert? Eventuell ist das Dokument ja selbst so schlau festzustellen, ob es auf diesem Gerät schon einmal irgendwas getan hat oder nicht.
    Und falls nicht, lassen sich genannte Methoden sicherlich entsprechend um Prüfroutinen anpassen.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Lucas de Vil schrieb:

    Ich würd ja jetzt fast schreien: Doku!

    NSDocument:
    - (void)encodeRestorableStateWithCoder:(NSCoder *)coder
    For example, you could use this method to record references to the data currently managed by the document and displayed by the window. (Do not store the actual data itself. Store only references to the data so that you can load it later from disk.) You must store enough data to reconfigure the document and its window to their current state during a subsequent launch of the app.

    - (void)restoreStateWithCoder:(NSCoder *)coder
    You can also use this method to reconfigure the document (or its associated window controller and window) to their previous appearance.

    + (NSArray *)restorableStateKeyPaths
    You can use this method instead of, or in addition to, the encodeRestorableStateWithCoder: and restoreStateWithCoder: methods to save and restore the state of your document. The key paths must refer to attributes that are key-value coding and Key-value observing compliant.
    When changes are detected, the specified attributes are automatically written to disk with the rest of the app’s interface-related state. At launch time, the attributes are automatically restored to their previous values.


    Da ich aber nicht weiß, ob du auch pre-Lion unterstützen willst, schreie ich mal nicht.


    Hm, danke das ist genau das was ich gesucht aber nicht gefunden habe. Entweder habe ich gestern irgendwelche alten Dokus von NSDokument durchsucht oder es schlicht und einfach überlesen.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • macmoonshine schrieb:

    MCDan schrieb:

    Wenn ich das Dokument z.B. auf einen anderen Mac kopiere, dann sollen die Einstellungen ja mit kopiert werden und somit auch auf dem anderen Mac zur Verfügung stehen.

    Das ist ja wahrscheinlich gerade der Knackpunkt: Wenn Du das Dokument einem anderen Nutzer gibst, soll er dann Deine Einstellungen haben oder lieber nicht?

    Es geht hier ja nicht um meine Einstellung, sondern die Einstellungen des Dokumentes. Da habe ich mich in dem o.a. Satz dann wohl nicht klar genau ausgedrückt.

    Ich meinte natürlich: "..., dann sollen die Einstellungen des Dokumentes ja mit kopiert werden..." ;)
  • Thallius schrieb:

    Amin Negm-Awad schrieb:

    Es gibt keine probate Methode dafür, weil der State von Views und Controllern nicht in das Dokument gehört.


    Danke für die immense Hilfe.

    Claus

    Ja, es ist eine Hilfe, die vor einem Konzeptfehler zu bewahren. Daran ändert ein Dickkopf gar nichts.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Thallius schrieb:

    […] wie z.B. welcher Eintrag als letztes im Tableview selektiert war […]

    Mal schauen, wie sinnvoll das ist, wenn Dokumente weitergegeben werden oder sich über die Cloud auf mehrere Geräte verteilen …

    Vor allem: Welcher Tableview? Hin und wieder gibt es ja Programme mit mehreren. Und wie finde ich das dann eigentlich synchronisiert auf dem iPhone, wenn ich zuletzt in der Mac-Version war.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Amin Negm-Awad schrieb:

    Thallius schrieb:

    Amin Negm-Awad schrieb:

    Es gibt keine probate Methode dafür, weil der State von Views und Controllern nicht in das Dokument gehört.


    Danke für die immense Hilfe.

    Claus

    Ja, es ist eine Hilfe, die vor einem Konzeptfehler zu bewahren. Daran ändert ein Dickkopf gar nichts.


    Dickkopf ? Ich hoffe damit meinst du Dich. Das würde nämlich passen und wäre dann keine persönliche Beleidigung mir gegenüber.

    Und andere konnten mir komischerweise helfen, liegt das jetzt wieder an mir oder ganz eventuell doch an dir?

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Thallius schrieb:

    Amin Negm-Awad schrieb:

    Thallius schrieb:

    Amin Negm-Awad schrieb:

    Es gibt keine probate Methode dafür, weil der State von Views und Controllern nicht in das Dokument gehört.


    Danke für die immense Hilfe.

    Claus

    Ja, es ist eine Hilfe, die vor einem Konzeptfehler zu bewahren. Daran ändert ein Dickkopf gar nichts.


    Dickkopf ? Ich hoffe damit meinst du Dich. Das würde nämlich passen und wäre dann keine persönliche Beleidigung mir gegenüber.

    Und andere konnten mir komischerweise helfen, liegt das jetzt wieder an mir oder ganz eventuell doch an dir?

    Claus

    Biher hast du keine Handlungsweise erhalten. Doch eine: Mache es gar nicht so. Die ist von mir.

    Und das ist nebenbei die einzig richtige Handlungsanweisung.

    Und ja, mit Dickkopf warst du gemeint:
    "Ich will das ins Dokument!"
    "Das ist aber ein Konzeptfehler."
    "Ich will das aber ins Dokument!"
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Amin Negm-Awad schrieb:

    Thallius schrieb:

    […] wie z.B. welcher Eintrag als letztes im Tableview selektiert war […]

    Mal schauen, wie sinnvoll das ist, wenn Dokumente weitergegeben werden oder sich über die Cloud auf mehrere Geräte verteilen …

    Vor allem: Welcher Tableview? Hin und wieder gibt es ja Programme mit mehreren. Und wie finde ich das dann eigentlich synchronisiert auf dem iPhone, wenn ich zuletzt in der Mac-Version war.

    Amin Negm-Awad schrieb:

    Thallius schrieb:

    Amin Negm-Awad schrieb:

    Thallius schrieb:

    Amin Negm-Awad schrieb:

    Es gibt keine probate Methode dafür, weil der State von Views und Controllern nicht in das Dokument gehört.


    Danke für die immense Hilfe.

    Claus

    Ja, es ist eine Hilfe, die vor einem Konzeptfehler zu bewahren. Daran ändert ein Dickkopf gar nichts.


    Dickkopf ? Ich hoffe damit meinst du Dich. Das würde nämlich passen und wäre dann keine persönliche Beleidigung mir gegenüber.

    Und andere konnten mir komischerweise helfen, liegt das jetzt wieder an mir oder ganz eventuell doch an dir?

    Claus

    Biher hast du keine Handlungsweise erhalten. Doch eine: Mache es gar nicht so. Die ist von mir.

    Und das ist nebenbei die einzig richtige Handlungsanweisung.

    Und ja, mit Dickkopf warst du gemeint:
    "Ich will das ins Dokument!"
    "Das ist aber ein Konzeptfehler."
    "Ich will das aber ins Dokument!"


    Wer lesen kann ist klar im Vorteil. Es haben sowohl Mac als auch Dan es geschafft sinnvoll mit zu diskutieren. Lediglich Du krächzt mal wieder von Deinem hohen Thron herunter. Aber ganz ehrlich. Es wird mir nun zu doof.

    Welcome on ignore, ich hoffe du ignorierst mich in Zukunft genauso. Das ist für uns beide besser.

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Amin Negm-Awad schrieb:

    Es gibt keine probate Methode dafür, weil der State von Views und Controllern nicht in das Dokument gehört.

    +hm+
    -encodeRestorableStateWithCoder:(NSDocument)
    Subclasses can override this method and use it to restore any information that would be needed to restore the document’s window to its current state.
    For example, you could use this method to record references to the data currently managed by the document and displayed by the window. (Do not store the actual data itself. Store only references to the data so that you can load it later from disk.)
    You must store enough data to reconfigure the document and its window to their current state during a subsequent launch of the app.

    Also da steht zumindest, das alles ins Dokument gehört, das das Dokument und sein Fenster benötigen, um den jetzt gerade aktuellen Stand bei einem Folgestart der App wiederherzustellen.
    Meiner Definition nach zählen die zuletzt ausgewählten Einträge der TableViews, die zuletzt gewählte Ansicht, der zuletzt gewählte Bearbeitungsmodus und schlimmstenfalls sogar die zuletzt gewählte Schriftfarbe des Textviews dazu.

    Eine Eigenart, die mit Lion Einzug hielt und eigentlich total spitze ist. Endlich finde ich Dokumente so vor, wie ich sie beim letzten Verlassen hinterlassen habe. Allerdings ist es egal, ob ich das möchte oder nicht.

    Wie dem auch sei: wie kommst du darauf, dass der State von Views und Controllern nicht in das Dokument gehört?
    Den State sehe ich hier gemäß Dokumentation als eine Art von Dicitonary an:
    lastSelectedItemInRootTableView => 0x0108F80998C8
    lastSelectedItemInDetailTableView => 0x0212FCED9391
    searchHistoryArray => 0x000012FC0815

    Welchen Grund zur Annahme hast du, meine Auffassung falsch sei?
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Es gibt Fälle, ist auch schon hier angesprochen worden, in denen der State von Views und Controllern das Dokument sind. Das ist aber gewiss nicht die Selektion eines Views oder Bindings-Controllers. Denkbar wäre etwa die Position in einem Textdokument. /Dazu/ ist das da. Es soll einen Fake bei Programmstart ermöglichen.

    Das Dokument speichert das Model. Views und Controller gehören nicht zum Model.

    Und die Auswirkungen kannst du dir leicht vorstellen, wenn das Ganze etwa in der Cloud landet. Da selektierst du einen Eintrag in dem Tableview A, arbeitest auf einem anderen Gerät mit einer anderen Software, die das gar nicht hat oder doch hat und du änderst die und auf einmal ist deine Selektion auf dem ersten Gerät weg. Behaves as intended?

    Ja, man braucht nicht immer Cloud.Aber es zeigt, dass der State falsch abgelegt wird.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Amin Negm-Awad schrieb:

    Behaves as intended?

    Ich denke schon.
    Schließlich wird das ja nicht fröhlich vor sich hin überschrieben, während die Dokumente noch an mehreren Positionen geöffnet sind.
    Es ist immer der Zyklus: Dokument öffnen, bearbeiten, schließen.

    Wenn ich jetzt also das Dokument auf dem Mac öffne, bearbeite und schließe und dann auf dem iPad öffne, bearbeite und schließe und dann wieder auf dem Mac öffne, dann habe ich den Status vom Zeitpunkt des Schließens auf dem iPad.
    Klingt für mich sehr nach 'Behaves as intended'.

    Zumal nur Änderungen überschrieben werden - hat das Programm für das iPad nicht die Möglichkeit, die Selektion von Tabelle A zu ändern, dann bleibt bis zum Sankt-Nimmerleins-Tag die Selektion in Tabelle A in dem Dokument erhalten und wird auch immer korrekt auf dem Mac angezeigt.
    Sie kann seitens des iPads ja nicht geändert werden.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Du hast die Applikation auf zwei iPads vor dir liegen und änderst die Selektion in dem einem Gerät, dann soll sich die Selektion in dem anderen Gerät ändern? Und das dann mit Verzögerung und gerade so wie gerade der Synchstatus ist.

    Krankes intended …
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Amin Negm-Awad schrieb:

    Du hast die Applikation auf zwei iPads vor dir liegen und änderst die Selektion in dem einem Gerät, dann soll sich die Selektion in dem anderen Gerät ändern?

    Läuft die Applikation auf beiden iPads gleichzeitig?
    Falls ja, dürfte überhaupt nix passieren - die App wird ja nicht beendet.
    Falls eine App beendet wird dürfte überhaupt nix passieren - die andere App wurde ja nicht gestartet.

    Ich sehe nicht, dass sich da irgendwas irgendwie irgendwo irgendwann auf ein bereits geöffnetes Dokument auswirken kann.
    Vielleicht sollte ich meine Brille suchen.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Amin Negm-Awad schrieb:

    Was hat das mit dem Beenden von Apps zu tun?

    Im Allgemeinen: nichts.
    Im Speziellen a.k.a. NSWindowRestauration: alles.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Ich weiß nicht, wovon du sprichst. Ich spreche hiervon:
    "welcher Eintrag als letztes im Tableview selektiert war"

    Dass du mit einem anderen Thema beginnst, ist zwar spannend, hat aber nichts mit der hier angesprochenen Problematik zu tun.

    Übrigens hatte ich dich darauf schon einmal hingewiesen:
    "Es gibt Fälle, ist auch schon hier angesprochen worden, in denen der State von Views und Controllern das Dokument sind. Das ist aber gewiss nicht die Selektion eines Views oder Bindings-Controllers. Denkbar wäre etwa die Position in einem Textdokument. /Dazu/ ist das da. Es soll einen Fake bei Programmstart ermöglichen."

    Sind wir uns also darüber einig, dass der vorgeschlagene Weg für Thallius' Problem mittelmäßiger Unfug ist?

    Man möchte nicht immer synchen. Ich habe gerade einen Kunden, der das auch für eine tolle Idee hielt. Jetzt wundert er sich, dass da irgendwelche Sachen auf zwei iPhones gesyncht werden, die sich unterschiedlich verhalten sollten.

    So einfach ist das eben nicht. Man muss schon genau nachdenken, was man wohin schreibt.

    +++
    Dafür spielt es übrigens nicht die geringste Rolle, ob eine App verlasen wird. Wird sie verlassen, dann erwartet der Nutzer bei einem Neustart, dass er wider an die Stelle auf diesem Gerät landet und nicht an die af einem anderen Gerät. UI-States sind gerätebezogen, nicht modellbezogen.

    Aber ich glaube, dass das auch ausreichend ausdiskutiert ist. Ich weiß nur, dass sich die Tester bei meinem Kunden gerade über so ein Verhalten beschweren. Und da ist das deutlich verborgener. Das gilt übrigens auch für klassischen Dokumentaustausch.
    /+++
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Amin Negm-Awad ()