NSURL书签查找失败

时间:2012-11-06 18:10:08

标签: objective-c macos cocoa nsurl nsfilemanager

我正在尝试将书签引用存储到NSURL的集合中,但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"

为什么我对我当然有权打开的文件收到此错误?并且第二个错误意味着书签不适用于目录吗?有没有其他方法可以保存重命名/移动的目录的持久标识符?

1 个答案:

答案 0 :(得分:2)

函数bookmarkDataWithContentsOfURL:error:别名文件中检索书签数据。

要为网址创建书签数据,请使用

bookmarkDataWithOptions:includingResourceValuesForKeys:relativeToURL:error:

请参阅“文件系统编程指南”中的Locating Files Using Bookmarks