Question

Étant donné un objet NSFileWrapper (pour un fichier ou un répertoire), est-il possible d'obtenir le chemin complet pour l'emplacement du fichier réel sur le disque?

[fileWrapper filename] renvoie uniquement le nom du fichier, pas le chemin, il est donc pas ce que je cherche.

Était-ce utile?

La solution

Non, il n'y a pas moyen d'obtenir le chemin complet de NSFileWrapper.

Autres conseils

Si vous utilisez NSDocument vous pouvez obtenir le chemin d'enveloppes de fichiers régulier fichier avec un petit hack.

Tout d'abord créer une sous-classe NSFileWrapper et surcharge les méthodes régulière fichiers qui reçoivent une URL pour stocker une copie de celui-ci.

@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

Ensuite, ajoutez cette catégorie NSFileWrapper:

@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: renvoie l'URL du nœud système de fichiers si elle est disponible, ou l'URL du fichier d'origine sinon.

Le code ci-dessus suppose que vous n'êtes pas wrappers de fichier répertoire de nidification.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top