2012-11-06 67 views
1

我试图将书签引用存储到NSURL的集合中,但bookmarkDataWithContentsOfURL似乎每次都失败,即使对于我有权访问的文件也是如此。我的应用程序尚未(尚未)沙盒,所以这不是问题。NSURL书签查找失败

我正在以其他方式(通过C语言和Cocoa APIs)阅读这些文件,没有任何问题。

我遍历一个目录,并试图读取书签数据,像这样:

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" 

为什么我得到这个错误的文件,我当然有permis锡永开放?第二个错误是否意味着书签不可用于目录?有没有其他方法可以保存重命名/移动后的目录的持久标识符?

回答

2

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

要为URL创建书签数据,使用

bookmarkDataWithOptions:includingResourceValuesForKeys:relativeToURL:error: 

Locating Files Using Bookmarks在 “文件系统编程指南”。

+0

谢谢 - 这个伎俩。 – Xtapolapocetl