7

BBEdit的一个很好的功能是它如何跟踪文件,无论这些文件发生了什么。我正在处理的应用程序需要跟踪用户拥有的许多文件的位置。用户可以移动或删除这些文件,我的应用程序需要知道这些文件在哪里,即使我的应用程序在位置更改发生时没有运行。

针对这个问题的推荐策略是什么,或者可能是什么?

在应用程序运行时跟踪文件不是问题。无论我的应用程序未运行时这些文件发生了什么,我都希望在我的应用程序运行时获得文件的正确路径。

手动搜索文件是最好的方法,还是有一个我忽略的 API 可以让这更容易?

4

1 回答 1

12

从 10.6 开始,它由以下的“书签”功能完成NSURL

书签是一种新工具,用于生成对由 URL 标识的资源的持久引用。书签是系统从资源 URL 生成的数据对象。书签数据封装了对基础资源的持久、不透明的引用以及创建书签时捕获的资源属性的值。书签可以存储在内存或磁盘上,稍后用于访问它包含的资源属性值,或解析为覆盖底层资源的 URL。对于文件系统资源,书签能够定位自创建书签以来已移动或重命名的资源,类似于 Alias Manager 别名。请注意,在此版本中,书签仅按路径解析。

NSURL.h 中进一步记录了以下新的 NSURL 方法:

- (NSData *)bookmarkDataWithOptions:(NSURLBookmarkCreationOptions)options includingResourceValuesForKeys:(NSArray *)keys relativeToURL:( NSURL*)relativeURL error:(NSURL **)error;
- (NSURL*)initByResolvingBookmarkData:(NSData*)bookmarkData options:(NSURLBookmarkResolutionOptions)options relativeToURL:(NSURL *)relativeURL bookmarkDataIsStale:(BOOL *)isStale error:(NSError **)error;
+ (NSURL *)URLByResolvingBookmarkData:(NSData *)bookmarkData options:(NSURLBookmarkResolutionOptions)options relativeToURL:(NSURL *)relativeURL bookmarkDataIsStale:(BOOL *)isStale error:(NSError **)error;
+ (NSDictionary *)resourceValuesForKeys:(NSArray *)keys fromBookmarkData:(NSData *)bookmarkData;

在 10.6 之前,它是使用aliases完成的。

于 2012-04-23T07:10:25.273 回答