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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top