如果书签无法解析,从NSData书签对象获取路径的最佳方法是什么?
通常情况下,您只需解析书签,获取网址,然后离开。但如果书签是指当前不存在的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];
}
答案 0 :(得分:0)
我从未弄清楚编码,但我找到了解决方法。
最初,我将沙盒NSURL编码为NSData对象,然后将它们作为NSArray存储在NSDefaults中。因此,我无法确定NSData的路径,除非它能解决。
解决方法是更改设计 - 现在我对沙盒NSURL进行编码,将其作为对象存储到NSDictionary中,其中键是URL路径,并将NSDictionary存储在NSDefaults中。
使用这种方法,我可以轻松地检索任何给定路径的NSData,即使它无法解析。