Вопрос

Учитывая объект nsfilewrapper (для файла или каталога), есть ли способ получить полный путь для местоположения фактического файла на диске?

[fileWrapper filename] Возвращает только имя файла, а не путь, так что это не то, что я ищу.

Это было полезно?

Решение

Нет, нет никакого способа получить полный путь от NSFileWrapper.

Другие советы

Если вы используете NSDocument Вы можете получить путь регулярных оберток файлов с небольшим взломом.

Сначала создайте NSFileWrapper Подкласс и перегружайте методы регулярных файлов, которые получают URL-адрес для хранения его копии.

@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

Затем добавьте это 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: Вернут URL-адрес узла файловой системы, если будет доступно, или исходный URL-адрес файла, если нет.

Приведенный выше код предполагает, что вы не гнездовываете обертки файлов каталогов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top