BBEdit的一个不错的功能是它如何跟踪文件,无论这些文件发生什么。我正在处理的应用程序需要跟踪用户拥有的许多文件的位置。用户可以移动或删除这些文件,即使我的应用程序在位置发生变化时没有运行,我的应用程序也需要知道这些文件的位置。
我的问题是这个问题的推荐策略是什么或可能是什么?在应用程序运行时跟踪文件不是问题。当我的应用程序没有运行时,无论我的应用程序运行时发生了什么,我都希望在我的应用程序运行时找到正确的文件路径。
手动搜索文件是最好的方法还是有一个我忽略的API让这更容易?
答案 0 :(得分: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完成的。