在我的cocoa应用程序中,我使用以下代码从NSURL创建一个安全范围的书签,我从NSOpenPanel获取:
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
。
其他人是否遇到过同样的问题?这是Yosemite中的一个已知错误还是我错过了处理这种情况的一些额外步骤?有解决方法吗?
答案 0 :(得分:0)
此错误似乎在Mac OS X El Capitan中得到解决。