【发布时间】:2014-11-27 16:32:26
【问题描述】:
在我的 cocoa 应用程序中,我使用以下代码从我从 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) 中,如果未安装外部驱动器,则书签解析不会像在 Mavericks 中那样返回 nil。相反,它返回一个指向 Macintosh HD 的 url(即 [myURL path] 返回字符串 @"/")。我注意到在这种情况下isStale==YES。
其他人是否遇到过同样的问题?这是优胜美地中的一个已知错误,还是我错过了一些额外的步骤来处理这种情况?有解决办法吗?
【问题讨论】:
标签: cocoa usb nsurl security-scoped-bookmarks