3 Stimmen

Was ist der akzeptierte Weg, um die Exportfunktionalität in einer dokumentenbasierten Cocoa-Anwendung zu implementieren?

Ich habe eine einfache dokumentbasierte Cocoa-Anwendung, die als Betrachter für .wav-Dateien fungiert, um ein bisschen Frequenzanalyse zu machen. Ich möchte in der Lage sein, die Daten aus geöffneten Dateien in CSV-Dateien für die weitere Analyse in anderen Programmen zu exportieren.

Mit dem dokumentenbasierten Anwendungsframework in Cocoa können Sie die folgenden Funktionen außer Kraft setzen

- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError

um den Standard-Workflow "Speichern/Speichern unter..." zu implementieren, aber ich möchte die Dateien, die ich öffne, nicht schreiben.

Die offensichtliche Sache zu tun ist, einen Export-Workflow in meinem Dokument zu implementieren, um eine Datei speichern Blatt zu präsentieren, bauen einige NSData, und schreiben Sie es in einen Dateipfad, aber es gibt nicht eine offensichtliche Möglichkeit, einen Ausgang in der MainMenu nib zu einer Aktion auf einem Dokument-Controller zu verbinden.

Was ist also der akzeptierte Weg, um eine solche Funktionalität in einer dokumentenbasierten Cocoa-Anwendung zu implementieren?

3voto

Jesse Rusak Punkte 55372

Sie können im "First Responder"-Objekt von MainMenu.nib eine neue Aktion mit der Bezeichnung "export:" erstellen und eine Verbindung zu ihr herstellen. Dann implementieren Sie eine export: Methode in Ihrer Dokument-Unterklasse. Dadurch wird Ihre Methode aufgerufen.

Der Grund dafür ist, dass Nachrichten, die an das magische First-Responder-Objekt gesendet werden, die gesamte Responder-Kette durchlaufen und nach einem Objekt suchen, das sie bearbeitet. Eines der Elemente in dieser Responder-Kette ist das Dokument, und wenn also das aktuell ausgewählte Steuerelement, die Ansicht, die Superview, das Fenster usw. die Nachricht nicht bearbeiten, bekommt das Dokument eine Chance. (Der Dokument-Controller ist auch in dieser Kette, so dass Sie ihn auch verwenden können).

Werfen Sie einen Blick in Apples Dokumente zur Responderkette - Abbildung 1.10 zeigt diesen besonderen Weg.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X