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

其他人是否遇到过同样的问题?这是优胜美地中的一个已知错误,还是我错过了一些额外的步骤来处理这种情况?有解决方法吗?

4

1 回答 1

0

这个错误似乎在 Mac OS X El Capitan 中得到了解决。

于 2015-06-17T09:37:27.780 回答