我正在尝试存储对NSURL
s 集合的书签引用,但bookmarkDataWithContentsOfURL
似乎每次都失败,即使对于我有权访问的文件也是如此。我的应用程序(尚未)被沙盒化,所以这不是问题。
我正在以其他方式(通过基于 C 和 Cocoa API)读取这些文件,没有任何问题。
我正在遍历一个目录并尝试像这样读取书签数据:
NSArray * contents = [[NSFileManager defaultManager]
contentsOfDirectoryAtURL:directoryURL
includingPropertiesForKeys:keys options:0 error:&error];
for (NSURL * url in contents)
{
NSData * bookmarkData = [NSURL bookmarkDataWithContentsOfURL:url error:&error];
if (error)
{
NSLog(@"Error finding bookmark for %@: %@", url, error);
}
}
对于所有常规文件,我收到以下错误:
Error finding bookmark for file://localhost/Users/mspong/foo/bar.pdf:
Error Domain=NSCocoaErrorDomain Code=256 "The file couldn’t be opened."
对于所有目录,我得到:
Error finding bookmark for file://localhost/Users/mspong/foo/:
Error Domain=NSPOSIXErrorDomain Code=21 "The operation couldn’t be completed. Is a directory"
为什么我确实有权打开的文件出现此错误?第二个错误是否意味着书签不适用于目录?是否有任何替代方法可以为在重命名/移动后幸存的目录保存持久标识符?