Holen Sie sich Pfad für NSFileWrapper
-
27-10-2019 - |
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.
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.