Ottieni il percorso per NSFileWrapper
-
27-10-2019 - |
Domanda
Dato un oggetto NSFileWrapper (per un file o una directory), esiste un modo per ottenere il percorso completo per la posizione del file effettivo sul disco?
[fileWrapper filename]
Restituisce solo il nome del file, non il percorso, quindi non è quello che sto cercando.
Soluzione
No, non c'è modo di ottenere il percorso completo NSFileWrapper
.
Altri suggerimenti
Se stai usando NSDocument
Puoi ottenere il percorso degli involucri di file regolari con un po 'di hack.
Prima crea un NSFileWrapper
Sottoclasse e sovraccarico i metodi di file normale che ricevono un URL per memorizzarne una copia.
@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
Quindi aggiungi questo NSFileWrapper
categoria:
@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:
restituirà l'URL del nodo del sistema file, se disponibile o l'URL del file originale in caso contrario.
Il codice sopra presuppone che non stai nidificando involucri di directory.