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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top