1

如果书签无法解析,从 NSData 书签对象获取路径的最佳方法是什么?

通常,您只需解析书签,获得一个 URL,然后就可以使用了。但如果书签指向当前不存在的 NFS 挂载,则无法解析。所以现在我有一个 NSData 指向某个无法解析的地方,但我不知道它指向哪里。

这是我拥有的代码块,它加载书签,尝试解析它们,并在解析失败时尝试解码 NSData,但我无法弄清楚编码 - 这甚至可能吗?

NSError* error = [[NSError alloc] init];
NSURL* resolvedURL = [NSURL URLByResolvingBookmarkData:bookmarkData 
                                               options:NSURLBookmarkResolutionWithSecurityScope | NSURLBookmarkResolutionWithoutUI 
                                         relativeToURL:nil 
                                   bookmarkDataIsStale:NULL 
                                                 error:&error];
if (resolvedURL) {
    // do some stuff
    ...
} else {
    NSString* msg  = [NSString stringWithFormat:@"Error Resolving Bookmark: %@", error];
    NSLog(msg);
    // the below certainly doesn't get me a path from the bookmark, any idea what will?
    // NSString* path = [[NSString alloc] initWithData:bookmarkData encoding:NSUTF32StringEncoding];
}
4

1 回答 1

0

我从来没有弄清楚编码,但我找到了一种解决方法。

最初,我将沙盒化的 NSURL 编码为 NSData 对象,然后将它们作为 NSArray 存储在 NSDefaults 中。因此,我无法确定 NSData 的路径,除非它可以解决。

解决方法是更改​​设计 - 现在我对沙盒 NSURL 进行编码,将其作为对象存储到 NSDictionary 中,键为 URL 路径,并将 NSDictionary 存储在 NSDefaults 中。

使用这种方法,我可以轻松地检索任何给定路径的 NSData,即使它无法解析。

于 2012-10-19T18:46:02.097 回答