質問

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