Frage

Gibt es angesichts eines NSFileWrapper -Objekts (für eine Datei oder ein Verzeichnis) eine Möglichkeit, den vollständigen Pfad für den Speicherort der tatsächlichen Datei auf der Festplatte zu erhalten?

[fileWrapper filename] Gibt nur den Dateinamen zurück, nicht den Pfad, also ist es nicht das, wonach ich suche.

War es hilfreich?

Lösung

Nein, es gibt keine Möglichkeit, den vollen Weg von NSFileWrapper.

Andere Tipps

Wenn Sie verwenden NSDocument Sie können den Weg der regulären Datei-Dateiverpackungen mit einem kleinen Hack erhalten.

Erstellen Sie zuerst a NSFileWrapper Unterklasse und überlasten Sie die regulären Methoden, die eine URL erhalten, um eine Kopie davon zu speichern.

@implementation RMFileWrapper

- (id) initWithURL:(NSURL *)url options:(NSFileWrapperReadingOptions)options error:(NSError *__autoreleasing *)outError {
    if (self = [super initWithURL:url options:options error:outError]) {
        self.originalURL = url;
    }
    return self;
}

- (BOOL) readFromURL:(NSURL *)url options:(NSFileWrapperReadingOptions)options error:(NSError *__autoreleasing *)outError {
    BOOL successful = [super readFromURL:url options:options error:outError];
    if (successful) {
        self.originalURL = url;
    }
    return successful;
}

@end

Dann fügen Sie das hinzu NSFileWrapper Kategorie:

@implementation NSFileWrapper(bestURLWithDocument)

- (NSURL*) bestURLInDocument:(SBDocument*)document {
    if (document.fileURL && self.filename) {
        NSString* path = [document.fileURL.path stringByAppendingPathComponent:self.filename];
        return [NSURL fileURLWithPath:path];
    } else if ([self isKindOfClass:[RMFileWrapper class]]) {
        RMFileWrapper *fileWrapper = (RMFileWrapper*) self;
        return fileWrapper.originalURL;        
    }
    return nil;
}

@end

bestURLInDocument: Gibt die URL des Datei-System-Knotens zurück, falls verfügbar, oder die URL der Originaldatei, falls nicht.

Der obige Code geht davon aus, dass Sie keine Verzeichnisse für Verzeichnisdateien nisten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top