2012-11-06 66 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