1

私のココア アプリでは、次のコードを使用して、NSOpenPanel から取得した NSURL からセキュリティ スコープのブックマークを作成します。

NSData *bookmarkData=[myURL bookmarkDataWithOptions:([NSURL instancesRespondToSelector:@selector(startAccessingSecurityScopedResource)] ? NSURLBookmarkCreationWithSecurityScope : 0) includingResourceValuesForKeys:(&NSURLPathKey==NULL ? [NSArray arrayWithObjects:NSURLVolumeIsLocalKey,nil] : [NSArray arrayWithObjects:NSURLPathKey,NSURLVolumeIsLocalKey,nil]) relativeToURL:nil error:&error];

それを解決するために、私は以下を使用します:

BOOL isStale;
myURL=[NSURL URLByResolvingBookmarkData:bookmarkData options:options relativeToURL:nil bookmarkDataIsStale:&isStale error:nil];

Mac OS X Mavericks (10.9) では、USB スティックなどの外部ドライブのブックマークを作成すると、これは正常に機能します。ただし、Yosemite (10.10) では、外部ドライブがマウントさnilれていない場合、Mavericks のようにブックマークの解像度が戻りません。代わりに、Macintosh HD を指す URL を返します (つまり[myURL path]、文字列 を返します@"/")。今回の件で気付きましたisStale==YES

他の誰かが同じ問題を経験しましたか? これは Yosemite の既知のバグですか、それともそのようなケースを処理するための追加の手順が不足していますか? 回避策はありますか?

4

1 に答える 1

0

このバグは、Mac OS X El Capitan では解決されているようです。

于 2015-06-17T09:37:27.780 に答える