Speichern von beliebigen Metadaten mit einer Nur-Text-Datei

8

Ich schreibe einen Texteditor und ich müsste mit jeder Datei, die die App speichert, ein paar Informationen speichern (in der Regel nur ein paar Strings; der Speicher muss nicht besonders haltbar sein) Text-Datei als andere Apps könnten es lesen und die Informationen sind nur für meine App).

Wie würde ich darüber gehen?

Weitere Informationen: Ich habe ein NSDocument eingerichtet und möchte einfach eine NSString-Instanzvariable als ein Meta-Datum pro Datei speichern. Aufgrund der folgenden Antworten bin ich auf dieses Problem gestoßen, das momentan fehlerhaft ist und dazu führt, dass das Programm beim Start abstürzt:

%Vor%

PS: Wenn deine Antwort wirklich gut ist (mit Beispielcode, etc.), werde ich ein Kopfgeld von 100 Punkten vergeben.

    
Jakub Hampl 29.04.2012, 18:05
quelle

2 Antworten

13

Verwenden Sie erweiterte Attribute. Siehe setxattr () .

Hier ist ein Beispielaufruf zum Schreiben einer Zeichenkette:

%Vor%

Um eine Zeichenfolge zu lesen:

%Vor%

PS: Müssen Sie das Kopfgeld nicht auf die Frage setzen, bevor es beantwortet wird?

    
Ken Thomases 29.04.2012, 18:21
quelle
2

Es gibt mehrere Speicherorte für diese Art von Informationen auf dem Mac. Am einfachsten ist es natürlich, es in Ihrer eigenen separaten Metadaten-Datenbank zu speichern. Natürlich gibt es Herausforderungen, wenn sich die Datei bewegt. Seit 10.6 können Sie jedoch Lesezeichen verwenden, um dieses Problem zu beheben. Ein Lesezeichen (siehe NSURL ) ermöglicht Sie behalten einen Verweis auf eine Datei, selbst wenn sie verschoben wurde (auch über Neustarts von Anwendungen hinweg). Vor 10.6 gab es den Alias-Manager, aber er konnte keine neuen Aliase erstellen; Lesen Sie einfach diejenigen, die der Finder erstellt hat.

Die nächste häufige Lösung besteht im Erstellen von Metadatendateien. Also, wenn ich foo.txt habe, dann erstellen Sie ein Geschwister .foo.txt.metadata , um die zusätzlichen Informationen zu halten. Mehrere Kompromisse dort, wenn die Dateien verschoben werden können.

Als nächstes folgt Spotlight, mit dem beliebige Informationen an Dateien angehängt werden können. Das eigentliche Werkzeug ist hier xattr (siehe die man-Seiten für setxattr und seine Verwandten). Diese absorbieren im Grunde mehrere Dinge, die früher mit Resource Forks gemacht wurden (außer dass xattr nur Metadaten sein sollen).

    
Rob Napier 29.04.2012 18:25
quelle

Tags und Links