Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 如何跟踪Mac OS X上的文件位置?_Cocoa_Filesystems_Osx Snow Leopard - Fatal编程技术网

Cocoa 如何跟踪Mac OS X上的文件位置?

Cocoa 如何跟踪Mac OS X上的文件位置?,cocoa,filesystems,osx-snow-leopard,Cocoa,Filesystems,Osx Snow Leopard,的一个很好的特性是它如何跟踪文件,而不管这些文件发生了什么。我正在开发的应用程序需要跟踪用户拥有的许多文件的位置。用户可以移动或删除这些文件,我的应用程序需要知道这些文件的位置,即使在发生位置更改时我的应用程序没有运行 针对此问题的建议策略是什么,或者可能是什么 在应用程序运行时跟踪文件不是问题。我希望在应用程序运行时找到文件的正确路径,无论应用程序未运行时这些文件发生了什么 手动搜索文件是最好的方法吗?还是有一个我忽略的API使搜索更容易?从10.6开始,通过NSURL的“书签”功能完成: 书

的一个很好的特性是它如何跟踪文件,而不管这些文件发生了什么。我正在开发的应用程序需要跟踪用户拥有的许多文件的位置。用户可以移动或删除这些文件,我的应用程序需要知道这些文件的位置,即使在发生位置更改时我的应用程序没有运行

针对此问题的建议策略是什么,或者可能是什么

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


手动搜索文件是最好的方法吗?还是有一个我忽略的API使搜索更容易?

从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之前,它是用来完成的。

这就是为什么苹果在10.6中添加了几乎所有以路径为参数的API的基于URL的版本的主要原因。现在强烈建议您使用文件URL而不是路径。苹果的“强烈鼓励”通常意味着“旧的方式很可能会被弃用”,这很好。幸运的是,我的应用程序需要10.6或更高版本,所以书签似乎是我所需要的全部。非常感谢@hamstergene.Windows上有类似的东西吗?