Obtener camino para nsfilewrapper
-
27-10-2019 - |
Pregunta
Dado un objeto NSFileWrapper (para un archivo o directorio), ¿hay alguna forma de obtener la ruta completa para la ubicación del archivo real en el disco?
[fileWrapper filename]
Solo devuelve el nombre del archivo, no la ruta, por lo que no es lo que estoy buscando.
Solución
No, no hay forma de obtener el camino completo desde NSFileWrapper
.
Otros consejos
Si estás usando NSDocument
Puede obtener la ruta de envoltorios de archivos de archivo regular con un pequeño truco.
Primero cree un NSFileWrapper
Subclase y sobrecarga los métodos de archivo regular que reciben una URL para almacenar una copia de ella.
@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
Entonces agrega esto NSFileWrapper
categoría:
@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:
devolverá la URL del nodo del sistema de archivos si está disponible, o la URL de archivo original si no.
El código anterior supone que no anesta envoltorios de archivos de directorio.