1

NSURLのコレクションへのブックマーク参照を保存しようとしてbookmarkDataWithContentsOfURLいますが、アクセスする権限があるファイルであっても、毎回失敗しているようです。私のアプリは(まだ)サンドボックス化されていないので、それは問題ではありません。

私はこれらのファイルを他の方法で(CベースのAPIと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"

確かに開く権限があるファイルでこのエラーが発生するのはなぜですか?そして、2番目のエラーは、ブックマークがディレクトリで利用できないことを意味しますか?名前の変更/移動後も存続するディレクトリの永続的な識別子を保存する別の方法はありますか?

4

1 に答える 1

2

この関数は、エイリアスファイルbookmarkDataWithContentsOfURL:error:からブックマークデータを取得します。

URLのブックマークデータを作成するには、

bookmarkDataWithOptions:includingResourceValuesForKeys:relativeToURL:error:

『ファイルシステムプログラミングガイド』のブックマークを使用したファイルの検索を参照してください。

于 2012-11-06T20:11:23.107 に答える