获取NSFileWrapper的path
给定一个NSFileWrapper对象(对于文件或目录),有什么办法可以获得磁盘上实际文件位置的完整path吗?
[fileWrapper filename]
只返回文件名,而不是path,所以它不是我要找的。
不,没有办法从NSFileWrapper
获取完整的path。
如果你使用的是NSDocument
你可以通过一些小技巧来获得常规文件文件包装的path。
首先创build一个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。
上面的代码假定你不是嵌套目录文件包装。