【问题标题】:Resolution of NSURL bookmark fails for an external drive in Yosemite优胜美地中外部驱动器的 NSURL 书签解析失败
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2015-08-05
      • 1970-01-01
      • 1970-01-01
      • 2012-10-26
      • 1970-01-01
      • 2015-03-13
      • 2015-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多