2012-10-10 33 views
1

如果书签无法解析,从NSData书签对象获取路径的最佳方式是什么?存储为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]; 
} 

回答

0

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

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

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

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