我正在使用OS X 10.6中引入的新的NSURL书签数据API,将“别名”存储到文件系统资源中。当我使用

+[NSURL URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:]


要解决书签数据,如果文件不再存在,则会显示nil。由于我没有在书签解析选项中传递NSURLBookmarkResolutionWithoutUI,因此我希望得到一个对话框,如打开不再解析的别名文件时(如取消或修复别名的对话框),如Finder所示。 ..)。

有没有办法让NSURL自动提示重新连接/解决损坏的书签数据?

书签数据是通过以下方式创建的:

NSError *err
NSData *bookmarkData = [myFileURL bookmarkDataWithOptions:NSURLBookmarkCreationSuitableForBookmarkFile
                           includingResourceValuesForKeys:nil
                                            relativeToURL:nil
                                            error:&err];


但是,如果使用0而不是NSURLBookmarkCreationSuitableForBookmarkFile作为选项,则会得到相同的结果。

我尝试通过以下方式解析相同的bookmarkData

BOOL stale;
NSError *err
NSURL *resolvedURL = [NSURL URLByResolvingBookmarkData:self.bookmarkData
                                               options:0
                         relativeToURL:nil
                               bookmarkDataIsStale:&stale
                                                 error:&err];


将书签数据写到finder别名文件中,然后通过从该文件中读取书签数据来解析URL,然后执行上述方法,同样无法产生所需的UI结果(尽管在Finder中打开别名文件确实会产生所需的UI对话框)。

最佳答案

否。如果目标位于需要身份验证才能连接的已卸载文件服务器上,则显示可能涉及书签/别名解析的UI。 Finder提供了重新连接对话框,以响应无法解析的别名。如果您希望您的应用程序具有类似的行为,则需要自己实施。

关于cocoa - 用于NSURL书签的Finder风格的UI缺少文件的数据解析?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2232774/

10-13 09:02